From 7fccb219f0c45cd3690b5d1f3cbaf8f38e9b1a5e Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 27 Oct 2020 17:37:39 +0100 Subject: [PATCH 01/66] wallet: support one single daily limit for transfers, top ups and gas top ups --- contracts/wallet.sol | 344 ++++++++++++------------------------------- 1 file changed, 95 insertions(+), 249 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 73e73ee1..82b979e0 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -9,11 +9,11 @@ * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ // SPDX-License-Identifier: GPLv3 @@ -58,7 +58,7 @@ contract SelfCallableOwnable is Ownable { /// @title AddressWhitelist provides payee-whitelist functionality. /// @dev This contract will allow the user to maintain a whitelist of addresses -/// @dev These addresses will live outside of the various spend limits +/// @dev These addresses will live outside of the daily limit contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { using SafeMath for uint256; @@ -240,272 +240,120 @@ contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { } } -/// @title DailyLimitTrait This trait allows for daily limits to be included in other contracts. -/// This contract will allow for a DailyLimit object to be instantiated and used. -library DailyLimitTrait { +/// @title DailyLimit provides daily limit functionality +contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelistable { using SafeMath for uint256; - event UpdatedAvailableLimit(); - - struct DailyLimit { - uint256 value; - uint256 available; - uint256 limitTimestamp; - uint256 pending; - bool controllerConfirmationRequired; + event SetDailyLimit(address _sender, uint256 _amount); + event SubmittedDailyLimitUpdate(uint256 _amount); + event UpdatedAvailableDailyLimit(); + + uint256 private _value; // The daily limit amount. + uint256 private _available; // The remaining amount available in the current 24-hour window. + uint256 private _pending; // The pending new limit value requested in the latest limit update submission. + uint256 private _updateTimestamp; // Denotes the time that the available daily limit was last updated. + bool private _controllerConfirmationRequired; // Indicates whether the limit is set requires 2FA to be updated. + + function _initializeDailyLimit(uint256 _limit, bytes32 _tokenWhitelistNode) internal initializer { + _value = _limit; + _available = _limit; + _updateTimestamp = now; + _pending = 0; + _controllerConfirmationRequired = false; + _initializeTokenWhitelistable(_tokenWhitelistNode); } /// @dev Confirm pending set daily limit operation. - function _confirmLimitUpdate(DailyLimit storage self, uint256 _amount) internal { - // Require that pending and confirmed spend limit are the same - require(self.pending == _amount, "confirmed/submitted limit mismatch"); - // Modify spend limit based on the pending value. - _modifyLimit(self, self.pending); - } - - /// @dev Use up amount within the daily limit. Will fail if amount is larger than daily limit. - function _enforceLimit(DailyLimit storage self, uint256 _amount) internal { - // Account for the spend limit daily reset. - _updateAvailableLimit(self); - require(self.available >= _amount, "available self.limitTimestamp.add(24 hours)) { - return self.value; - } else { - return self.available; - } + function confirmDailyLimitUpdate(uint256 _amount) external onlyController { + // Require that pending and confirmed limits are the same. + require(_pending == _amount, "confirmed/submitted limit mismatch"); + // Modify daily limit based on the pending value. + _modifyLimit(_pending); + emit SetDailyLimit(msg.sender, _amount); } - /// @dev Modify the spend limit and spend available based on the provided value. - /// @dev _amount is the daily limit amount in wei. - function _modifyLimit(DailyLimit storage self, uint256 _amount) private { - // Account for the spend limit daily reset. - _updateAvailableLimit(self); - // Set the daily limit to the provided amount. - self.value = _amount; - // Lower the available limit if it's higher than the new daily limit. - if (self.available > self.value) { - self.available = self.value; - } + /// @dev Returns the active daily limit change. + function dailyLimitPending() external view returns (uint256) { + return _pending; } - /// @dev Set the daily limit. - /// @param _amount is the daily limit amount in base units. - function _setLimit(DailyLimit storage self, uint256 _amount) internal { - // Require that the spend limit has not been set yet. - require(!self.controllerConfirmationRequired, "limit already set"); - // Modify spend limit based on the provided value. - _modifyLimit(self, _amount); - // Flag the operation as set. - self.controllerConfirmationRequired = true; + /// @dev Returns if the daily limit been initialized. + function dailyLimitControllerConfirmationRequired() external view returns (bool) { + return _controllerConfirmationRequired; } - /// @dev Submit a daily limit update, needs to be confirmed. - /// @param _amount is the daily limit amount in base units. - function _submitLimitUpdate(DailyLimit storage self, uint256 _amount) internal { - // Require that the spend limit has been set. - require(self.controllerConfirmationRequired, "limit hasn't been set yet"); - // Assign the provided amount to pending daily limit. - self.pending = _amount; + /// @dev Get the daily limit value. + function dailyLimitValue() external view returns (uint256) { + return _value; } - /// @dev Update available spend limit based on the daily reset. - function _updateAvailableLimit(DailyLimit storage self) private { - if (now > self.limitTimestamp.add(24 hours)) { - // Update the current timestamp. - self.limitTimestamp = now; - // Set the available limit to the current spend limit. - self.available = self.value; - emit UpdatedAvailableLimit(); + /// @dev Returns the available daily limit/balance, accounts for daily limit reset. + /// @return amount of available to spend within the current day in base units. + function dailyLimitAvailable() external view returns (uint256) { + if (now > _updateTimestamp.add(24 hours)) { + return _value; + } else { + return _available; } } -} - -/// @title it provides daily spend limit functionality. -contract SpendLimit is ControllableOwnable, SelfCallableOwnable { - event SetSpendLimit(address _sender, uint256 _amount); - event SubmittedSpendLimitUpdate(uint256 _amount); - - using DailyLimitTrait for DailyLimitTrait.DailyLimit; - - DailyLimitTrait.DailyLimit internal _spendLimit; - - /// @dev Confirm pending set daily limit operation. - function confirmSpendLimitUpdate(uint256 _amount) external onlyController { - _spendLimit._confirmLimitUpdate(_amount); - emit SetSpendLimit(msg.sender, _amount); - } - /// @dev Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses. + /// @dev Sets the initial daily (aka transfer) limit for non-whitelisted addresses. /// @param _amount is the daily limit amount in wei. - function setSpendLimit(uint256 _amount) external onlyOwnerOrSelf { - _spendLimit._setLimit(_amount); - emit SetSpendLimit(msg.sender, _amount); - } - - /// @dev View your available limit - function spendLimitAvailable() external view returns (uint256) { - return _spendLimit._getAvailableLimit(); - } - - /// @dev Is there an active spend limit change - function spendLimitPending() external view returns (uint256) { - return _spendLimit.pending; - } - - /// @dev Has the spend limit been initialised - function spendLimitControllerConfirmationRequired() external view returns (bool) { - return _spendLimit.controllerConfirmationRequired; - } - - /// @dev View how much has been spent already - function spendLimitValue() external view returns (uint256) { - return _spendLimit.value; + function setDailyLimit(uint256 _amount) external onlyOwnerOrSelf { + // Require that the daily limit has not been set yet. + require(!_controllerConfirmationRequired, "limit already set"); + // Modify daily limit based on the provided value. + _modifyLimit(_amount); + // Flag the operation as set. + _controllerConfirmationRequired = true; + emit SetDailyLimit(msg.sender, _amount); } /// @dev Submit a daily transfer limit update for non-whitelisted addresses. /// @param _amount is the daily limit amount in wei. - function submitSpendLimitUpdate(uint256 _amount) external onlyOwnerOrSelf { - _spendLimit._submitLimitUpdate(_amount); - emit SubmittedSpendLimitUpdate(_amount); - } - - /// @dev Initializes the daily spend limit in wei. - function _initializeSpendLimit(uint256 _limit) internal initializer { - _spendLimit = DailyLimitTrait.DailyLimit(_limit, _limit, now, 0, false); - } -} - -/// @title GasTopUpLimit provides daily limit functionality. -contract GasTopUpLimit is ControllableOwnable, SelfCallableOwnable { - event SetGasTopUpLimit(address _sender, uint256 _amount); - event SubmittedGasTopUpLimitUpdate(uint256 _amount); - - uint256 private constant _MAXIMUM_GAS_TOPUP_LIMIT = 500 finney; - uint256 private constant _MINIMUM_GAS_TOPUP_LIMIT = 1 finney; - - using DailyLimitTrait for DailyLimitTrait.DailyLimit; - - DailyLimitTrait.DailyLimit internal _gasTopUpLimit; - - /// @dev Confirm pending set top up gas limit operation. - function confirmGasTopUpLimitUpdate(uint256 _amount) external onlyController { - _gasTopUpLimit._confirmLimitUpdate(_amount); - emit SetGasTopUpLimit(msg.sender, _amount); - } - - /// @dev View your available gas top-up limit - function gasTopUpLimitAvailable() external view returns (uint256) { - return _gasTopUpLimit._getAvailableLimit(); - } - - /// @dev Is there an active gas top-up limit change - function gasTopUpLimitPending() external view returns (uint256) { - return _gasTopUpLimit.pending; - } - - /// @dev Has the gas top-up limit been initialised - function gasTopUpLimitControllerConfirmationRequired() external view returns (bool) { - return _gasTopUpLimit.controllerConfirmationRequired; - } - - /// @dev View how much gas top-up has been spent already - function gasTopUpLimitValue() external view returns (uint256) { - return _gasTopUpLimit.value; - } - - /// @dev Sets the daily gas top up limit. - /// @param _amount is the gas top up amount in wei. - function setGasTopUpLimit(uint256 _amount) external onlyOwnerOrSelf { - require(_MINIMUM_GAS_TOPUP_LIMIT <= _amount && _amount <= _MAXIMUM_GAS_TOPUP_LIMIT, "out of range top-up"); - _gasTopUpLimit._setLimit(_amount); - emit SetGasTopUpLimit(msg.sender, _amount); - } - - /// @dev Submit a daily gas top up limit update. - /// @param _amount is the daily top up gas limit amount in wei. - function submitGasTopUpLimitUpdate(uint256 _amount) external onlyOwnerOrSelf { - require(_MINIMUM_GAS_TOPUP_LIMIT <= _amount && _amount <= _MAXIMUM_GAS_TOPUP_LIMIT, "out of range top-up"); - _gasTopUpLimit._submitLimitUpdate(_amount); - emit SubmittedGasTopUpLimitUpdate(_amount); - } - - /// @dev Initializes the daily gas topup limit in wei. - function _initializeGasTopUpLimit() internal initializer { - _gasTopUpLimit = DailyLimitTrait.DailyLimit(_MAXIMUM_GAS_TOPUP_LIMIT, _MAXIMUM_GAS_TOPUP_LIMIT, now, 0, false); - } -} - -/// @title LoadLimit provides daily load limit functionality. -contract LoadLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelistable { - event SetLoadLimit(address _sender, uint256 _amount); - event SubmittedLoadLimitUpdate(uint256 _amount); - - uint256 private constant _MAXIMUM_STABLECOIN_LOAD_LIMIT = 10000; // USD - uint256 private _maximumLoadLimit; - - using DailyLimitTrait for DailyLimitTrait.DailyLimit; - - DailyLimitTrait.DailyLimit internal _loadLimit; - - /// @dev Sets a daily card load limit. - /// @param _amount is the card load amount in current stablecoin base units. - function setLoadLimit(uint256 _amount) external onlyOwnerOrSelf { - require(_amount <= _maximumLoadLimit, "out of range load amount"); - _loadLimit._setLimit(_amount); - emit SetLoadLimit(msg.sender, _amount); - } - - /// @dev Submit a daily load limit update. - /// @param _amount is the daily load limit amount in wei. - function submitLoadLimitUpdate(uint256 _amount) external onlyOwnerOrSelf { - require(_amount <= _maximumLoadLimit, "out of range load amount"); - _loadLimit._submitLimitUpdate(_amount); - emit SubmittedLoadLimitUpdate(_amount); - } - - /// @dev Confirm pending set load limit operation. - function confirmLoadLimitUpdate(uint256 _amount) external onlyController { - _loadLimit._confirmLimitUpdate(_amount); - emit SetLoadLimit(msg.sender, _amount); - } - - /// @dev View your available load limit - function loadLimitAvailable() external view returns (uint256) { - return _loadLimit._getAvailableLimit(); - } - - /// @dev Is there an active load limit change - function loadLimitPending() external view returns (uint256) { - return _loadLimit.pending; + function submitDailyLimitUpdate(uint256 _amount) external onlyOwnerOrSelf { + // Require that the daily limit has been set. + require(_controllerConfirmationRequired, "limit has not been set yet"); + // Assign the provided amount to pending daily limit. + _pending = _amount; + emit SubmittedDailyLimitUpdate(_amount); } - /// @dev Has the load limit been initialised - function loadLimitControllerConfirmationRequired() external view returns (bool) { - return _loadLimit.controllerConfirmationRequired; + /// @dev Use up amount within the daily limit. Will fail if amount is larger than available limit. + function _enforceDailyLimit(uint256 _amount) internal { + // Account for the limit daily reset. + _updateAvailableDailyLimit(); + require(_available >= _amount, "available smaller than amount"); + _available = _available.sub(_amount); } - /// @dev View how much laod limit has been spent already - function loadLimitValue() external view returns (uint256) { - return _loadLimit.value; + /// @dev Modify the daily and available limits based on the provided value. + /// @dev _amount is the daily limit amount in wei. + function _modifyLimit(uint256 _amount) private { + // Account for the limit daily reset. + _updateAvailableDailyLimit(); + // Set the daily limit to the provided amount. + _value = _amount; + // Lower the available limit if it's higher than the new daily limit. + if (_available > _value) { + _available = _value; + } } - function _initializeLoadLimit(bytes32 _tokenWhitelistNode) internal initializer { - _initializeTokenWhitelistable(_tokenWhitelistNode); - (, uint256 stablecoinMagnitude, , , , , ) = _getStablecoinInfo(); - require(stablecoinMagnitude > 0, "no stablecoin"); - _maximumLoadLimit = _MAXIMUM_STABLECOIN_LOAD_LIMIT * stablecoinMagnitude; - _loadLimit = DailyLimitTrait.DailyLimit(_maximumLoadLimit, _maximumLoadLimit, now, 0, false); + /// @dev Update available limit based on the daily reset. + function _updateAvailableDailyLimit() private { + if (now > _updateTimestamp.add(24 hours)) { + // Update the current timestamp. + _updateTimestamp = now; + // Set the available limit to the current daily limit. + _available = _value; + emit UpdatedAvailableDailyLimit(); + } } } /// @title Asset wallet with extra security features, gas top up management and card integration. -contract Wallet is ENSResolvable, AddressWhitelist, SpendLimit, GasTopUpLimit, LoadLimit, IERC165, Transferrable, Balanceable { +contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transferrable, Balanceable { using Address for address; using ECDSA for bytes32; using SafeERC20 for IERC20; @@ -542,7 +390,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, SpendLimit, GasTopUpLimit, L /// @param _tokenWhitelistNode_ is the ENS name node of the Token whitelist. /// @param _controllerNode_ is the ENS name node of the Controller contract. /// @param _licenceNode_ is the ENS name node of the Licence contract. - /// @param _spendLimit_ is the initial spend limit. + /// @param _dailyLimit_ is the initial daily limit. function initializeWallet( address payable _owner_, bool _transferable_, @@ -550,14 +398,12 @@ contract Wallet is ENSResolvable, AddressWhitelist, SpendLimit, GasTopUpLimit, L bytes32 _tokenWhitelistNode_, bytes32 _controllerNode_, bytes32 _licenceNode_, - uint256 _spendLimit_ + uint256 _dailyLimit_ ) external initializer { _initializeENSResolvable(_ens_); _initializeControllable(_controllerNode_); _initializeOwnable(_owner_, _transferable_); - _initializeSpendLimit(_spendLimit_); - _initializeGasTopUpLimit(); - _initializeLoadLimit(_tokenWhitelistNode_); + _initializeDailyLimit(_dailyLimit_, _tokenWhitelistNode_); _licenceNode = _licenceNode_; } @@ -641,7 +487,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, SpendLimit, GasTopUpLimit, L // Convert token amount to stablecoin value. uint256 stablecoinValue = convertToStablecoin(_asset, _amount); // Check against the daily spent limit and update accordingly, require that the value is under remaining limit. - _loadLimit._enforceLimit(stablecoinValue); + _enforceDailyLimit(stablecoinValue); // Get the TKN licenceAddress from ENS address licenceAddress = _ensResolve(_licenceNode); if (_asset != address(0)) { @@ -665,7 +511,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, SpendLimit, GasTopUpLimit, L // Check contract balance is sufficient for the operation require(address(this).balance > _amount, "balance not sufficient"); // Check against the daily spent limit and update accordingly, require that the value is under remaining limit. - _gasTopUpLimit._enforceLimit(_amount); + _enforceDailyLimit(_amount); // Then perform the transfer owner().transfer(_amount); // Emit the gas top up event. @@ -694,7 +540,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, SpendLimit, GasTopUpLimit, L destination := shr(96, mload(add(_transactionBatch, pos))) // get value: pos + 20 bytes (destinnation address) value := mload(add(_transactionBatch, add(pos, 20))) - // get data: pos + 20 (destination address) + 32 (value) bytes + // get data: pos + 20 (destination address) + 32 (value) bytes // the first 32 bytes denote the byte array length dataLength := mload(add(_transactionBatch, add(pos, 52))) data := add(_transactionBatch, add(pos, 52)) @@ -771,7 +617,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, SpendLimit, GasTopUpLimit, L // If value is send across as a part of this executeTransaction, this will be sent to any payable // destination. As a result enforceLimit if destination is not whitelisted. if (!whitelistMap[_destination]) { - _spendLimit._enforceLimit(_value); + _enforceDailyLimit(_value); } // Check if the destination is a Contract and it is one of our supported tokens if (address(_destination).isContract() && _isTokenAvailable(_destination)) { @@ -783,7 +629,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, SpendLimit, GasTopUpLimit, L // If the address (of the token contract, e.g) is not in the TokenWhitelist used by the convert method // then etherValue will be zero uint256 etherValue = convertToEther(_destination, amount); - _spendLimit._enforceLimit(etherValue); + _enforceDailyLimit(etherValue); } // use callOptionalReturn provided in SafeERC20 in case the ERC20 method // returns false instead of reverting! @@ -837,7 +683,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, SpendLimit, GasTopUpLimit, L } // Check against the daily spent limit and update accordingly // Check against the daily spent limit and update accordingly, require that the value is under remaining limit. - _spendLimit._enforceLimit(etherValue); + _enforceDailyLimit(etherValue); } // Transfer token or ether based on the provided address. _safeTransfer(_to, _asset, _amount); From cc7030da0d4dc61397fb7bfa358b4f07ff9e36dc Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 27 Oct 2020 17:42:56 +0100 Subject: [PATCH 02/66] walletCache: switch 'defaultSpendLimit' to 'defaultDailyLimit' --- contracts/walletCache.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contracts/walletCache.sol b/contracts/walletCache.sol index 5421c383..1beb1ac8 100644 --- a/contracts/walletCache.sol +++ b/contracts/walletCache.sol @@ -48,7 +48,7 @@ contract WalletCache is ENSResolvable, Controllable { bytes32 public walletDeployerNode = _DEFAULT_WALLET_DEPLOYER_NODE; address public walletImplementation; - uint256 public defaultSpendLimit; + uint256 public defaultDailyLimit; address payable[] public cachedWallets; @@ -57,7 +57,7 @@ contract WalletCache is ENSResolvable, Controllable { constructor( address _walletImplementation_, address _ens_, - uint256 _defaultSpendLimit_, + uint256 _defaultDailyLimit_, bytes32 _controllerNode_, bytes32 _licenceNode_, bytes32 _tokenWhitelistNode_, @@ -66,7 +66,7 @@ contract WalletCache is ENSResolvable, Controllable { _initializeENSResolvable(_ens_); _initializeControllable(_controllerNode_); walletImplementation = _walletImplementation_; - defaultSpendLimit = _defaultSpendLimit_; + defaultDailyLimit = _defaultDailyLimit_; // Set licenceNode or use default if (_licenceNode_ != bytes32(0)) { @@ -115,7 +115,7 @@ contract WalletCache is ENSResolvable, Controllable { tokenWhitelistNode, controllerNode(), licenceNode, - defaultSpendLimit + defaultDailyLimit ); cachedWallets.push(wallet); From 43002f20af1cb7e974f5c1c5bff9b5e582d935fa Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 27 Oct 2020 17:44:54 +0100 Subject: [PATCH 03/66] walletDeployer: remove gasTopUps, spend and load for single daily limit --- contracts/walletDeployer.sol | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/contracts/walletDeployer.sol b/contracts/walletDeployer.sol index 80d80754..8590b8a5 100644 --- a/contracts/walletDeployer.sol +++ b/contracts/walletDeployer.sol @@ -66,19 +66,14 @@ contract WalletDeployer is ENSResolvable, Controllable { /// @notice This function is used to migrate an owner's security settings from a previous version of the wallet /// @param _owner is the owner address for the new Wallet to be - /// @param _spendLimit is the user's set daily spend limit - /// @param _gasTopUpLimit is the user's set daily gas top-up limit + /// @param _dailyLimit is the user's set daily limit /// @param _whitelistedAddresses is the set of the user's whitelisted addresses function migrateWallet( address payable _owner, address payable _oldWallet, - bool _initializedSpendLimit, - bool _initializedGasTopUpLimit, - bool _initializedLoadLimit, + bool _initializedDailyLimit, bool _initializedWhitelist, - uint256 _spendLimit, - uint256 _gasTopUpLimit, - uint256 _loadLimit, + uint256 _dailyLimit, address[] calldata _whitelistedAddresses ) external payable onlyController { require(deployedWallets[_owner] == address(0), "wallet already deployed for owner"); @@ -90,14 +85,8 @@ contract WalletDeployer is ENSResolvable, Controllable { deployedWallets[_owner] = wallet; // Sets up the security settings as per the _oldWallet - if (_initializedSpendLimit) { - Wallet(wallet).setSpendLimit(_spendLimit); - } - if (_initializedGasTopUpLimit) { - Wallet(wallet).setGasTopUpLimit(_gasTopUpLimit); - } - if (_initializedLoadLimit) { - Wallet(wallet).setLoadLimit(_loadLimit); + if (_initializedDailyLimit) { + Wallet(wallet).setDailyLimit(_dailyLimit); } if (_initializedWhitelist) { Wallet(wallet).setWhitelist(_whitelistedAddresses); From 9c2f86d42f47000d2277f08ac5d1df596910dd03 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 27 Oct 2020 17:47:00 +0100 Subject: [PATCH 04/66] Remove not used single limit tests --- test/wallet/load_limit_test.go | 322 ------------------------------- test/wallet/top_up_limit_test.go | 312 ------------------------------ 2 files changed, 634 deletions(-) delete mode 100644 test/wallet/load_limit_test.go delete mode 100644 test/wallet/top_up_limit_test.go diff --git a/test/wallet/load_limit_test.go b/test/wallet/load_limit_test.go deleted file mode 100644 index 7c10d729..00000000 --- a/test/wallet/load_limit_test.go +++ /dev/null @@ -1,322 +0,0 @@ -package wallet_test - -import ( - "math/big" - "time" - - "github.com/ethereum/go-ethereum/core/types" - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/tokencard/contracts/v3/test/shared" - "github.com/tokencard/ethertest" -) - -var _ = Describe("loadLimit", func() { - - BeforeEach(func() { - BankAccount.MustTransfer(Backend, Controller.Address(), FinneyToWei(500)) - - }) - - When("the contract just has been deployed", func() { - - It("should have initial MAX load limit of 10,000 USD /stablecoins", func() { - ll, err := WalletProxy.LoadLimitValue(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(ll.String()).To(Equal(GweiToWei(10).String())) - - ll, err = WalletProxy.LoadLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(ll.String()).To(Equal(GweiToWei(10).String())) - }) - - }) - - Describe("SetLoadLimit", func() { - - When("I try to set load limit to 0 (below min load limit)", func() { - It("Should succeed", func() { - tx, err := WalletProxy.SetLoadLimit(Owner.TransactOpts(), GweiToWei(0)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - }) - - When("I try to Set load limit to 10001 USD (above max load limit)", func() { - It("Should fail", func() { - tx, err := WalletProxy.SetLoadLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(10001)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("I Set load limit for the first time to 1000 USD", func() { - var tx *types.Transaction - BeforeEach(func() { - var err error - tx, err = WalletProxy.SetLoadLimit(Owner.TransactOpts(), GweiToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - }) - - It("should succeed", func() { - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("should update the set flag", func() { - set, err := WalletProxy.LoadLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(set).To(BeTrue()) - }) - - It("should emit a load limit set event", func() { - it, err := WalletProxy.FilterSetLoadLimit(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(it.Next()).To(BeTrue()) - evt := it.Event - Expect(it.Next()).To(BeFalse()) - Expect(evt.Sender).To(Equal(Owner.Address())) - Expect(evt.Amount.String()).To(Equal(GweiToWei(1).String())) - }) - - When("I try to set the limit again", func() { - It("should fail", func() { - tx, err := WalletProxy.SetLoadLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) - - }) - - }) - - }) - - Describe("Changing daily Load limit", func() { - - When("I submit daily load limit of 5K USD before setting it", func() { - It("should fail", func() { - tx, err := WalletProxy.SubmitLoadLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("I submit daily load limit of 0 (< min load limit) after having set it", func() { - It("should succeed", func() { - tx, err := WalletProxy.SetLoadLimit(Owner.TransactOpts(), GweiToWei(10)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitLoadLimitUpdate(Owner.TransactOpts(), GweiToWei(0)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - }) - - When("I submit daily load limit of 10001 USD (> max load limit) after having set it", func() { - It("should fail", func() { - tx, err := WalletProxy.SetLoadLimit(Owner.TransactOpts(), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitLoadLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), GweiToWei(10001)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("controller submits daily load limit of 1K USD(> max load limit) after having set it", func() { - It("should fail", func() { - tx, err := WalletProxy.SetLoadLimit(Owner.TransactOpts(), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitLoadLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(65000)), GweiToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 65000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) - - }) - - When("a random person submits daily load limit of 0 USD after having set it", func() { - It("should fail", func() { - tx, err := WalletProxy.SetLoadLimit(Owner.TransactOpts(), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitLoadLimitUpdate(RandomAccount.TransactOpts(ethertest.WithGasLimit(65000)), big.NewInt(0)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 65000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) - - }) - - When("I submit 2 Loadlimits of 2K and 1K USD respectively after having set it", func() { - BeforeEach(func() { - tx, err := WalletProxy.SetLoadLimit(Owner.TransactOpts(), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitLoadLimitUpdate(Owner.TransactOpts(), GweiToWei(2)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitLoadLimitUpdate(Owner.TransactOpts(), GweiToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("should emit 2 submission events", func() { - it, err := WalletProxy.FilterSubmittedLoadLimitUpdate(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(it.Next()).To(BeTrue()) - evt := it.Event - Expect(it.Next()).To(BeTrue()) - Expect(evt.Amount).To(Equal(GweiToWei(2))) - evt = it.Event - Expect(it.Next()).To(BeFalse()) - Expect(evt.Amount).To(Equal(GweiToWei(1))) - }) - - It("should have pending load limit of 1K USD", func() { - ptl, err := WalletProxy.LoadLimitPending(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(ptl.String()).To(Equal(GweiToWei(1).String())) - }) - - When("the Owner tries to re-submit a load limit of 5K USD", func() { - BeforeEach(func() { - tx, err := WalletProxy.SubmitLoadLimitUpdate(Owner.TransactOpts(), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("should set pending load limit to 5K", func() { - psl, err := WalletProxy.LoadLimitPending(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(psl.String()).To(Equal(GweiToWei(5).String())) - }) - - When("the Owner tries to submit a second load limit of 5K USD", func() { - It("should succeed", func() { - tx, err := WalletProxy.SubmitLoadLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - }) - }) - - When("I try to confirm the load limit", func() { - It("should fail", func() { - tx, err := WalletProxy.ConfirmLoadLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), GweiToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("a random person tries to confirm the load limit", func() { - It("should fail", func() { - tx, err := WalletProxy.ConfirmLoadLimitUpdate(RandomAccount.TransactOpts(ethertest.WithGasLimit(65000)), GweiToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 65000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("the controller confirms the load limit using the wrong amount", func() { - It("should fail", func() { - tx, err := WalletProxy.ConfirmLoadLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(100000)), GweiToWei(2)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("the controller confirms the load limit", func() { - BeforeEach(func() { - tx, err := WalletProxy.ConfirmLoadLimitUpdate(Controller.TransactOpts(), GweiToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("should have 1K USD available for loading", func() { - ll, err := WalletProxy.LoadLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(ll.String()).To(Equal(GweiToWei(1).String())) - }) - - When("I submit a second load limit to 5K USD", func() { - BeforeEach(func() { - tx, err := WalletProxy.SubmitLoadLimitUpdate(Owner.TransactOpts(), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - When("the controller confirms the load limit", func() { - BeforeEach(func() { - tx, err := WalletProxy.ConfirmLoadLimitUpdate(Controller.TransactOpts(), GweiToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("should have 1K USD available for loading", func() { - tl, err := WalletProxy.LoadLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(tl.String()).To(Equal(GweiToWei(1).String())) - }) - When("I wait for longer than a day", func() { - BeforeEach(func() { - Backend.AdjustTime(time.Hour * 25) - Backend.Commit() - }) - - It("should have 5K USD available for further loading", func() { - ll, err := WalletProxy.LoadLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(ll.String()).To(Equal(GweiToWei(5).String())) - }) - - }) - - }) - - }) - - }) - - }) - - }) - -}) diff --git a/test/wallet/top_up_limit_test.go b/test/wallet/top_up_limit_test.go deleted file mode 100644 index 275104cc..00000000 --- a/test/wallet/top_up_limit_test.go +++ /dev/null @@ -1,312 +0,0 @@ -package wallet_test - -import ( - "time" - - // "github.com/ethereum/go-ethereum/core/types" - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/tokencard/contracts/v3/test/shared" - "github.com/tokencard/ethertest" -) - -var _ = Describe("GasTopUpLimit", func() { - BeforeEach(func() { - BankAccount.MustTransfer(Backend, Controller.Address(), FinneyToWei(500)) - }) - - When("the contract just has been deployed", func() { - - It("should have initial GasTopUp of 500 Finney available", func() { - tl, err := WalletProxy.GasTopUpLimitValue(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(tl.String()).To(Equal(FinneyToWei(500).String())) - - tl, err = WalletProxy.GasTopUpLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(tl.String()).To(Equal(FinneyToWei(500).String())) - }) - - }) - - Describe("SetGasTopUpLimit", func() { - var txSuccessful bool - - When("I try to set GasTopUp limit to one Gwei (below min GasTopUp limit)", func() { - BeforeEach(func() { - tx, err := WalletProxy.SetGasTopUpLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), GweiToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - txSuccessful = isSuccessful(tx) - }) - - It("should fail", func() { - Expect(txSuccessful).To(BeFalse()) - }) - - }) - - When("I try to set GasTopUp limit to one ETH (above max GasTopUp limit)", func() { - BeforeEach(func() { - tx, err := WalletProxy.SetGasTopUpLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - ethertest.WithGasLimit(100000) - txSuccessful = isSuccessful(tx) - }) - - It("should fail", func() { - Expect(txSuccessful).To(BeFalse()) - }) - - }) - - When("I set GasTopUp limit for the first time to one Finney", func() { - BeforeEach(func() { - tx, err := WalletProxy.SetGasTopUpLimit(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - txSuccessful = isSuccessful(tx) - }) - - It("should succeed", func() { - Expect(txSuccessful).To(BeTrue()) - }) - - It("should update the set flag", func() { - initialized, err := WalletProxy.GasTopUpLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(initialized).To(BeTrue()) - }) - - It("should emit GasTopUp limit set event", func() { - it, err := WalletProxy.FilterSetGasTopUpLimit(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(it.Next()).To(BeTrue()) - evt := it.Event - Expect(it.Next()).To(BeFalse()) - Expect(evt.Sender).To(Equal(Owner.Address())) - Expect(evt.Amount).To(Equal(FinneyToWei(1))) - }) - - When("I try to set the limit again", func() { - It("should fail", func() { - tx, err := WalletProxy.SetGasTopUpLimit(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(500)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - - }) - }) - - }) - - Describe("Changing daily GasTopUp limit", func() { - - When("I submit daily GasTopUp limit above 1 Finney before initialization", func() { - It("should fail", func() { - tx, err := WalletProxy.SubmitGasTopUpLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("I submit daily GasTopUp limit below 1 Finney after having set it", func() { - It("should fail", func() { - tx, err := WalletProxy.SetGasTopUpLimit(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitGasTopUpLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), GweiToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("I submit daily GasTopUp limit above 500 Finney after having set it", func() { - It("should fail", func() { - tx, err := WalletProxy.SetGasTopUpLimit(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitGasTopUpLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), EthToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("controller submits daily GasTopUp limit of 1 Finney after having set it", func() { - It("should fail", func() { - tx, err := WalletProxy.SetGasTopUpLimit(Owner.TransactOpts(), FinneyToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitGasTopUpLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - - }) - - When("a random person submits daily GasTopUp limit of 1 Finney after having set it", func() { - It("should fail", func() { - tx, err := WalletProxy.SetGasTopUpLimit(Owner.TransactOpts(), FinneyToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitGasTopUpLimitUpdate(RandomAccount.TransactOpts(ethertest.WithGasLimit(60000)), FinneyToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - - }) - - When("I submit GasTopUp limit of 2 and 1 Finney after having set it", func() { - BeforeEach(func() { - tx, err := WalletProxy.SetGasTopUpLimit(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(5)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitGasTopUpLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(2)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitGasTopUpLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("should emit 2 submission events", func() { - it, err := WalletProxy.FilterSubmittedGasTopUpLimitUpdate(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(it.Next()).To(BeTrue()) - evt := it.Event - Expect(it.Next()).To(BeTrue()) - Expect(evt.Amount).To(Equal(FinneyToWei(2))) - evt = it.Event - Expect(it.Next()).To(BeFalse()) - Expect(evt.Amount).To(Equal(FinneyToWei(1))) - }) - - It("should have pending GasTopUp limit of 1 Finney", func() { - ptl, err := WalletProxy.GasTopUpLimitPending(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(ptl.String()).To(Equal(FinneyToWei(1).String())) - }) - - When("I try to submit a second GasTopUp limit of 500 Finney", func() { - It("should succeed", func() { - tx, err := WalletProxy.SubmitGasTopUpLimitUpdate(Owner.TransactOpts(), FinneyToWei(500)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - }) - - When("I try to confirm the TopUpGas limit", func() { - It("should fail", func() { - tx, err := WalletProxy.ConfirmGasTopUpLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("a random person tries to confirm the GasTopUp limit", func() { - It("should fail", func() { - tx, err := WalletProxy.ConfirmGasTopUpLimitUpdate(RandomAccount.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("the controller confirms the GasTopUp limit using the wrong amount", func() { - It("should fail", func() { - tx, err := WalletProxy.ConfirmGasTopUpLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(100000)), FinneyToWei(2)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("the controller confirms the GasTopUp limit", func() { - BeforeEach(func() { - tx, err := WalletProxy.ConfirmGasTopUpLimitUpdate(Controller.TransactOpts(), FinneyToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("should have 1 Finney available for GasTopUps", func() { - tl, err := WalletProxy.GasTopUpLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(tl.String()).To(Equal(FinneyToWei(1).String())) - }) - - When("I submit 2 GasTopUps 250 and 500 Finney repsectively", func() { - BeforeEach(func() { - tx, err := WalletProxy.SubmitGasTopUpLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(250)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitGasTopUpLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(500)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - When("the controller confirms the last GasTopUp", func() { - BeforeEach(func() { - tx, err := WalletProxy.ConfirmGasTopUpLimitUpdate(Controller.TransactOpts(), FinneyToWei(500)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("should have 1 Finney available for GasTopUps", func() { - tl, err := WalletProxy.GasTopUpLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(tl.String()).To(Equal(FinneyToWei(1).String())) - }) - When("I wait for longer than a day", func() { - BeforeEach(func() { - Backend.AdjustTime(time.Hour * 25) - Backend.Commit() - }) - - It("should have 500 Finney available for GasTopUps", func() { - tl, err := WalletProxy.GasTopUpLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(tl.String()).To(Equal(FinneyToWei(500).String())) - }) - - }) - - }) - - }) - - }) - - }) - - }) - -}) From 9aabf8857ea0a48daf3a01a34b570991002cd80f Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 27 Oct 2020 17:48:27 +0100 Subject: [PATCH 05/66] Fix gas top up test missing daily limit --- test/wallet/top_up_gas_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/wallet/top_up_gas_test.go b/test/wallet/top_up_gas_test.go index 6e8b7eec..f2fe6a82 100644 --- a/test/wallet/top_up_gas_test.go +++ b/test/wallet/top_up_gas_test.go @@ -17,6 +17,10 @@ var _ = Describe("topUpGas", func() { Context("when the wallet has enough ETH", func() { BeforeEach(func() { BankAccount.MustTransfer(Backend, WalletProxyAddress, EthToWei(10)) + tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(), FinneyToWei(500)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) }) var tx *types.Transaction From 3c5c4ff06beba3d3054124549b1f377f98f74155 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 Oct 2020 17:24:20 +0100 Subject: [PATCH 06/66] Replace spend limit test with daily limit test --- ...pend_limit_test.go => daily_limit_test.go} | 96 +++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) rename test/wallet/{spend_limit_test.go => daily_limit_test.go} (66%) diff --git a/test/wallet/spend_limit_test.go b/test/wallet/daily_limit_test.go similarity index 66% rename from test/wallet/spend_limit_test.go rename to test/wallet/daily_limit_test.go index 4995bff6..d2214cda 100644 --- a/test/wallet/spend_limit_test.go +++ b/test/wallet/daily_limit_test.go @@ -10,21 +10,21 @@ import ( "github.com/tokencard/ethertest" ) -var _ = Describe("spendAvailable", func() { +var _ = Describe("Daily limit", func() { BeforeEach(func() { BankAccount.MustTransfer(Backend, Controller.Address(), EthToWei(1)) }) When("wallet has been deployed", func() { It("should have 100 ETH spend available", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(100).String())) }) - When("a random person tries to set the spend limit", func() { + When("a random person tries to set the daily limit", func() { It("should fail", func() { - tx, err := WalletProxy.SetSpendLimit(RandomAccount.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) + tx, err := WalletProxy.SetDailyLimit(RandomAccount.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isGasExhausted(tx, 100000)).To(BeFalse()) @@ -32,9 +32,9 @@ var _ = Describe("spendAvailable", func() { }) }) - When("controller tries to set the spend limit", func() { + When("controller tries to set the daily limit", func() { It("should fail", func() { - tx, err := WalletProxy.SetSpendLimit(Controller.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) + tx, err := WalletProxy.SetDailyLimit(Controller.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isGasExhausted(tx, 100000)).To(BeFalse()) @@ -42,16 +42,16 @@ var _ = Describe("spendAvailable", func() { }) }) - When("Owner sets the spendLimit to 1 ETH", func() { + When("Owner sets the dailyLimit to 1 ETH", func() { BeforeEach(func() { - tx, err := WalletProxy.SetSpendLimit(Owner.TransactOpts(), EthToWei(1)) + tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) It("should emit a spend limit set event", func() { - it, err := WalletProxy.FilterSetSpendLimit(nil) + it, err := WalletProxy.FilterSetDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) evt := it.Event @@ -60,21 +60,21 @@ var _ = Describe("spendAvailable", func() { Expect(evt.Amount).To(Equal(EthToWei(1))) }) - It("should lower the spend available to 1 ETH", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should lower the available limit amount to 1 ETH", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(1).String())) }) - It("should have spend limit of 1 ETH", func() { - sl, err := WalletProxy.SpendLimitValue(nil) + It("should have a new limit of 1 ETH", func() { + sl, err := WalletProxy.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(EthToWei(1).String())) }) - When("the owner tries to initialize the spending limit again", func() { + When("the owner tries to initialize the limit again", func() { It("should fail", func() { - tx, err := WalletProxy.SetSpendLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) + tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isGasExhausted(tx, 100000)).To(BeFalse()) @@ -83,22 +83,22 @@ var _ = Describe("spendAvailable", func() { }) }) - When("I set spend limit to 1000 ETH", func() { + When("I set limit to 1000 ETH", func() { BeforeEach(func() { - tx, err := WalletProxy.SetSpendLimit(Owner.TransactOpts(), EthToWei(1000)) + tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(), EthToWei(1000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) It("should update the set flag", func() { - initialized, err := WalletProxy.SpendLimitControllerConfirmationRequired(nil) + initialized, err := WalletProxy.DailyLimitControllerConfirmationRequired(nil) Expect(err).ToNot(HaveOccurred()) Expect(initialized).To(BeTrue()) }) - It("should keep the spend available at 100 ETH", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should keep the available amount limit at 100 ETH", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(100).String())) }) @@ -109,8 +109,8 @@ var _ = Describe("spendAvailable", func() { Backend.Commit() }) - It("should increase the spend available to 1000 ETH", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should increase the available amount limit to 1000 ETH", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(1000).String())) }) @@ -127,8 +127,8 @@ var _ = Describe("spendAvailable", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should have 999 ETH spend available", func() { - sa, err := WalletProxy.SpendLimitAvailable(nil) + It("should have 999 ETH available", func() { + sa, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(sa.String()).To(Equal(EthToWei(999).String())) }) @@ -137,9 +137,9 @@ var _ = Describe("spendAvailable", func() { }) }) - When("I submit the spend limit of 1 ETH before initialization", func() { + When("I submit a limit of 1 ETH before initialization", func() { It("should fail", func() { - tx, err := WalletProxy.SubmitSpendLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) + tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isGasExhausted(tx, 100000)).To(BeFalse()) @@ -147,32 +147,32 @@ var _ = Describe("spendAvailable", func() { }) }) - When("I submit 3 spend limit updates of 1 ETH after having set it", func() { + When("I submit 3 limit updates of 1 ETH after having set it", func() { BeforeEach(func() { - tx, err := WalletProxy.SetSpendLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(2)) + tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(2)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isGasExhausted(tx, 100000)).To(BeFalse()) Expect(isSuccessful(tx)).To(BeTrue()) - tx, err = WalletProxy.SubmitSpendLimitUpdate(Owner.TransactOpts(), EthToWei(3)) + tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(3)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) - tx, err = WalletProxy.SubmitSpendLimitUpdate(Owner.TransactOpts(), EthToWei(4)) + tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(4)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) - tx, err = WalletProxy.SubmitSpendLimitUpdate(Owner.TransactOpts(), EthToWei(1)) + tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) It("should emit 3 submission events", func() { - it, err := WalletProxy.FilterSubmittedSpendLimitUpdate(nil) + it, err := WalletProxy.FilterSubmittedDailyLimitUpdate(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) evt := it.Event @@ -186,21 +186,21 @@ var _ = Describe("spendAvailable", func() { Expect(evt.Amount).To(Equal(EthToWei(1))) }) - It("should not reduce the spend available", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should not reduce the available amount", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(2).String())) }) - It("should set the pending spend limit to 1 ETH", func() { - psl, err := WalletProxy.SpendLimitPending(nil) + It("should set the pending limit to 1 ETH", func() { + psl, err := WalletProxy.DailyLimitPending(nil) Expect(err).ToNot(HaveOccurred()) Expect(psl.String()).To(Equal(EthToWei(1).String())) }) - When("the controller confirms the spend limit providing the wrong amount", func() { + When("the controller confirms the limit providing the wrong amount", func() { It("should fail", func() { - tx, err := WalletProxy.ConfirmSpendLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(2)) + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(2)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isGasExhausted(tx, 100000)).To(BeFalse()) @@ -208,16 +208,16 @@ var _ = Describe("spendAvailable", func() { }) }) - When("the controller confirms the spend limit", func() { + When("the controller confirms the right limit", func() { BeforeEach(func() { - tx, err := WalletProxy.ConfirmSpendLimitUpdate(Controller.TransactOpts(), EthToWei(1)) + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should emit a spend limit set event", func() { - it, err := WalletProxy.FilterSetSpendLimit(nil) + It("should emit a limit set event", func() { + it, err := WalletProxy.FilterSetDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) Expect(it.Next()).To(BeTrue()) @@ -226,15 +226,15 @@ var _ = Describe("spendAvailable", func() { Expect(evt.Amount).To(Equal(EthToWei(1))) }) - It("should reduce the spend available to 1 ETH", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should reduce the available limit amount to 1 ETH", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(1).String())) }) - When("I try to set the spend limit", func() { + When("I try to set the daily limit", func() { It("should fail", func() { - tx, err := WalletProxy.SetSpendLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1000)) + tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isGasExhausted(tx, 100000)).To(BeFalse()) @@ -244,9 +244,9 @@ var _ = Describe("spendAvailable", func() { }) - When("I try to update the spendLimit again", func() { + When("I try to update the dailyLimit again", func() { It("should succeed", func() { - tx, err := WalletProxy.SubmitSpendLimitUpdate(Owner.TransactOpts(), EthToWei(1)) + tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) From 26e37a8b873eeefee931d803472591c20b938b1c Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 Oct 2020 17:26:13 +0100 Subject: [PATCH 07/66] Fix wallet-deployer tests due to daily limit change --- test/wallet-deployer/cache_wallet_test.go | 4 +- test/wallet-deployer/migrate_wallet_test.go | 125 +++---------------- test/wallet-deployer/wallet_deployer_test.go | 16 +-- 3 files changed, 26 insertions(+), 119 deletions(-) diff --git a/test/wallet-deployer/cache_wallet_test.go b/test/wallet-deployer/cache_wallet_test.go index 15a22dad..7b00a1d6 100644 --- a/test/wallet-deployer/cache_wallet_test.go +++ b/test/wallet-deployer/cache_wallet_test.go @@ -14,8 +14,8 @@ var _ = Describe("Cache Wallet", func() { When("no Wallets are cached", func() { - It("should have a default spend limit of 1 ETH", func() { - sl, err := WalletCache.DefaultSpendLimit(nil) + It("should have a default daily limit of 1 ETH", func() { + sl, err := WalletCache.DefaultDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(EthToWei(1).String())) }) diff --git a/test/wallet-deployer/migrate_wallet_test.go b/test/wallet-deployer/migrate_wallet_test.go index b75eaaaf..591d3ade 100644 --- a/test/wallet-deployer/migrate_wallet_test.go +++ b/test/wallet-deployer/migrate_wallet_test.go @@ -24,7 +24,7 @@ var _ = Describe("Migrate Wallet", func() { RandomProxyAddress := deployInitProxy(Owner.Address(), EthToWei(2)) - tx, err := WalletDeployer.MigrateWallet(Controller.TransactOpts(), Owner.Address(), RandomProxyAddress, false, false, false, false, EthToWei(2), FinneyToWei(1), EthToWei(1), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) + tx, err := WalletDeployer.MigrateWallet(Controller.TransactOpts(), Owner.Address(), RandomProxyAddress, false, false, EthToWei(2), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -40,24 +40,6 @@ var _ = Describe("Migrate Wallet", func() { Expect(initialized).To(BeFalse()) }) - It("should NOT make the GasTopUpLimit updateable", func() { - initialized, err := MigratedWallet.GasTopUpLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(initialized).To(BeFalse()) - }) - - It("should NOT make SpendLimit updateable", func() { - initialized, err := MigratedWallet.SpendLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(initialized).To(BeFalse()) - }) - - It("should NOT make LoadLimit updateable", func() { - initialized, err := MigratedWallet.LoadLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(initialized).To(BeFalse()) - }) - It("should NOT add the whitelisted addresses to the whitelist", func() { isWhitelisted, err := MigratedWallet.WhitelistMap(nil, common.HexToAddress("0x1")) Expect(err).ToNot(HaveOccurred()) @@ -68,24 +50,11 @@ var _ = Describe("Migrate Wallet", func() { Expect(isWhitelisted).To(BeFalse()) }) - It("should NOT update the spend limit to 2 ETH", func() { - sl, err := MigratedWallet.SpendLimitValue(nil) + It("should NOT update the daily limit", func() { + sl, err := MigratedWallet.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(EthToWei(1).String())) }) - - It("should NOT update the gasTopUp limit to 1 finney", func() { - sl, err := MigratedWallet.GasTopUpLimitValue(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(FinneyToWei(500).String())) - }) - - It("should NOT increase the loadLimit", func() { - sl, err := MigratedWallet.LoadLimitValue(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(GweiToWei(10).String())) - }) - }) When("no wallets are cached and a controller migrates a Wallet and send 1000 wei", func() { @@ -101,7 +70,7 @@ var _ = Describe("Migrate Wallet", func() { RandomProxyAddress = deployInitProxy(RandomOwner, EthToWei(2)) - tx, err = WalletDeployer.MigrateWallet(Controller.TransactOpts(ethertest.WithValue(big.NewInt(1000))), RandomOwner, RandomProxyAddress, true, true, true, true, EthToWei(2), FinneyToWei(1), GweiToWei(1), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) + tx, err = WalletDeployer.MigrateWallet(Controller.TransactOpts(ethertest.WithValue(big.NewInt(1000))), RandomOwner, RandomProxyAddress, true, true, EthToWei(2), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -140,7 +109,7 @@ var _ = Describe("Migrate Wallet", func() { }) It("should fail if a wallet is already deployed/migrated for this owner", func() { - tx, err = WalletDeployer.MigrateWallet(Controller.TransactOpts(ethertest.WithGasLimit(5000000)), RandomOwner, RandomProxyAddress, true, true, true, true, EthToWei(2), FinneyToWei(1), EthToWei(1000), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) + tx, err = WalletDeployer.MigrateWallet(Controller.TransactOpts(ethertest.WithGasLimit(5000000)), RandomOwner, RandomProxyAddress, true, true, EthToWei(2), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) @@ -167,8 +136,8 @@ var _ = Describe("Migrate Wallet", func() { Expect(err).ToNot(HaveOccurred()) }) - It("should emit a setSpendLimit set event", func() { - it, err := MigratedWallet.FilterSetSpendLimit(nil) + It("should emit a daily limit set event", func() { + it, err := MigratedWallet.FilterSetDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) evt := it.Event @@ -177,92 +146,30 @@ var _ = Describe("Migrate Wallet", func() { Expect(evt.Amount).To(Equal(EthToWei(2))) }) - It("should keep the available spend Limit to 1 ETH", func() { - av, err := MigratedWallet.SpendLimitAvailable(nil) + It("should keep the available amount to 1 ETH", func() { + av, err := MigratedWallet.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(1).String())) }) - It("should update the spend limit to 2 ETH", func() { - sl, err := MigratedWallet.SpendLimitValue(nil) + It("should update the daily limit to 2 ETH", func() { + sl, err := MigratedWallet.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(EthToWei(2).String())) }) - It("should make SpendLimit updateable", func() { - initialized, err := MigratedWallet.SpendLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(initialized).To(BeTrue()) - }) - - It("should update the gasTopUp limit to 1 finney", func() { - sl, err := MigratedWallet.GasTopUpLimitValue(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(FinneyToWei(1).String())) - }) - - It("should decrease the available gasTopUpLimit to 1 Finney", func() { - av, err := MigratedWallet.GasTopUpLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(FinneyToWei(1).String())) - }) - - It("should make GasToUpLimit updateable", func() { - initialized, err := MigratedWallet.GasTopUpLimitControllerConfirmationRequired(nil) + It("should update the dailyLimitControllerConfirmationRequired flag", func() { + initialized, err := MigratedWallet.DailyLimitControllerConfirmationRequired(nil) Expect(err).ToNot(HaveOccurred()) Expect(initialized).To(BeTrue()) }) - It("should emit a setGasTopUpLimit event", func() { - it, err := MigratedWallet.FilterSetGasTopUpLimit(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(it.Next()).To(BeTrue()) - evt := it.Event - Expect(it.Next()).To(BeFalse()) - Expect(evt.Sender).To(Equal(WalletDeployerAddress)) - Expect(evt.Amount).To(Equal(FinneyToWei(1))) - }) - - It("should make LoadLimit updateable", func() { - initialized, err := MigratedWallet.LoadLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(initialized).To(BeTrue()) - }) - - It("should emit a setLoadLimit set event", func() { - it, err := MigratedWallet.FilterSetLoadLimit(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(it.Next()).To(BeTrue()) - evt := it.Event - Expect(it.Next()).To(BeFalse()) - Expect(evt.Sender).To(Equal(WalletDeployerAddress)) - Expect(evt.Amount).To(Equal(GweiToWei(1))) - }) - - It("should decrease the available loadLimit to 1000 USD", func() { - av, err := MigratedWallet.LoadLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(GweiToWei(1).String())) - }) - - It("should decrease the loadLimit to 1000 USD", func() { - sl, err := MigratedWallet.LoadLimitValue(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(GweiToWei(1).String())) - }) - It("should update the Whitelist initializedWhitelist flag", func() { initialized, err := MigratedWallet.IsSetWhitelist(nil) Expect(err).ToNot(HaveOccurred()) Expect(initialized).To(BeTrue()) }) - It("should update the TopUpLimit initializedTopup flag", func() { - initialized, err := MigratedWallet.GasTopUpLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(initialized).To(BeTrue()) - }) - It("should add the whitelisted addresses to the whitelist", func() { isWhitelisted, err := MigratedWallet.WhitelistMap(nil, common.HexToAddress("0x1")) Expect(err).ToNot(HaveOccurred()) @@ -290,7 +197,7 @@ var _ = Describe("Migrate Wallet", func() { It("should fail", func() { RandomProxyAddress := deployInitProxy(Owner.Address(), EthToWei(2)) - tx, err := WalletDeployer.MigrateWallet(Controller.TransactOpts(ethertest.WithGasLimit(5000000)), Controller.Address(), RandomProxyAddress, false, false, false, false, EthToWei(2), FinneyToWei(1), EthToWei(1000), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) + tx, err := WalletDeployer.MigrateWallet(Controller.TransactOpts(ethertest.WithGasLimit(5000000)), Controller.Address(), RandomProxyAddress, false, false, EthToWei(2), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) @@ -301,7 +208,7 @@ var _ = Describe("Migrate Wallet", func() { When("a random account tries to migrate a Wallet", func() { It("should fail", func() { - tx, err := WalletDeployer.MigrateWallet(RandomAccount.TransactOpts(ethertest.WithGasLimit(5000000)), Owner.Address(), RandomAccount.Address(), false, false, false, false, EthToWei(1), FinneyToWei(2), EthToWei(1000), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) + tx, err := WalletDeployer.MigrateWallet(RandomAccount.TransactOpts(ethertest.WithGasLimit(5000000)), Owner.Address(), RandomAccount.Address(), false, false, EthToWei(1), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) @@ -326,7 +233,7 @@ var _ = Describe("Migrate Wallet", func() { RandomProxyAddress = deployInitProxy(Owner.Address(), EthToWei(2)) - tx, err = WalletDeployer.MigrateWallet(Controller.TransactOpts(), Owner.Address(), RandomProxyAddress, false, false, false, false, EthToWei(1), FinneyToWei(2), EthToWei(1000), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) + tx, err = WalletDeployer.MigrateWallet(Controller.TransactOpts(), Owner.Address(), RandomProxyAddress, false, false, EthToWei(1), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) diff --git a/test/wallet-deployer/wallet_deployer_test.go b/test/wallet-deployer/wallet_deployer_test.go index 14a46b7c..784cafe7 100644 --- a/test/wallet-deployer/wallet_deployer_test.go +++ b/test/wallet-deployer/wallet_deployer_test.go @@ -68,7 +68,7 @@ var _ = Describe("Wallet Deployer", func() { Expect(it.Event.Wallet).To(Equal(addr)) }) - When("new Wallet owner sets the spend limit", func() { + When("new Wallet owner sets the daily limit", func() { var NewWallet *bindings.Wallet BeforeEach(func() { @@ -81,7 +81,7 @@ var _ = Describe("Wallet Deployer", func() { }) It("should succeed", func() { - tx, err := NewWallet.SetSpendLimit(Owner.TransactOpts(), EthToWei(1)) + tx, err := NewWallet.SetDailyLimit(Owner.TransactOpts(), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -122,7 +122,7 @@ var _ = Describe("Wallet Deployer", func() { Expect(addr).ToNot(Equal(common.HexToAddress("0x0"))) }) - When("New Wallet owner sets the spend limit", func() { + When("New Wallet owner sets the daily limit", func() { var NewWallet *bindings.Wallet BeforeEach(func() { @@ -131,20 +131,20 @@ var _ = Describe("Wallet Deployer", func() { NewWallet, err = bindings.NewWallet(NewWalletAddress, Backend) Expect(err).ToNot(HaveOccurred()) - tx, err := NewWallet.SetSpendLimit(Owner.TransactOpts(), FinneyToWei(500)) + tx, err := NewWallet.SetDailyLimit(Owner.TransactOpts(), FinneyToWei(500)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should lower the spend available to 500 Finney", func() { - av, err := NewWallet.SpendLimitAvailable(nil) + It("should lower the daily available to 500 Finney", func() { + av, err := NewWallet.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(FinneyToWei(500).String())) }) - It("should have a spend limit of 500 Finney", func() { - sl, err := NewWallet.SpendLimitValue(nil) + It("should have a daily limit of 500 Finney", func() { + sl, err := NewWallet.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(FinneyToWei(500).String())) }) From 191b2eceeb4a4cc1645a3e63c127d21a13ecbcd8 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 Oct 2020 17:26:53 +0100 Subject: [PATCH 08/66] Fix upgradable test due to daily limit change --- test/upgradeable/uninitialized_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/upgradeable/uninitialized_test.go b/test/upgradeable/uninitialized_test.go index 919830fa..75bd206c 100644 --- a/test/upgradeable/uninitialized_test.go +++ b/test/upgradeable/uninitialized_test.go @@ -35,7 +35,7 @@ var _ = Describe("uninitialized", func() { }) It("Should fail it when there's onlyOwnerOrSelf()", func() { - tx, err = ProxyWallet.SetSpendLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(1000)) + tx, err = ProxyWallet.SetDailyLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(1000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) @@ -44,7 +44,7 @@ var _ = Describe("uninitialized", func() { }) It("Should fail it when there's onlyController()", func() { - tx, err = ProxyWallet.ConfirmSpendLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(1000)) + tx, err = ProxyWallet.ConfirmDailyLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(1000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) From 1bbb060e222aad503223b948942d6dfa4318defd Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 Oct 2020 17:39:02 +0100 Subject: [PATCH 09/66] Fix wallet tests due to daily limit change --- test/wallet/batch_execute_transaction_test.go | 16 ++--- test/wallet/execute_transaction_test.go | 58 +++++++++---------- test/wallet/transfer_test.go | 30 +++++----- test/wallet/whitelist_test.go | 2 +- 4 files changed, 53 insertions(+), 53 deletions(-) diff --git a/test/wallet/batch_execute_transaction_test.go b/test/wallet/batch_execute_transaction_test.go index 5b892667..40fb481d 100644 --- a/test/wallet/batch_execute_transaction_test.go +++ b/test/wallet/batch_execute_transaction_test.go @@ -160,7 +160,7 @@ var _ = Describe("batchExecuteTransaction", func() { a, err := abi.JSON(strings.NewReader(WALLET_ABI)) Expect(err).ToNot(HaveOccurred()) - data, err := a.Pack("setSpendLimit", EthToWei(1)) + data, err := a.Pack("setDailyLimit", EthToWei(1)) Expect(err).ToNot(HaveOccurred()) batch := fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(big.NewInt(0)), abi.U256(big.NewInt(int64(len(data)))), data) @@ -196,8 +196,8 @@ var _ = Describe("batchExecuteTransaction", func() { Expect(evt.Addresses).To(Equal([]common.Address{RandomAccount.Address()})) }) - It("should emit a spend limit set event", func() { - it, err := WalletProxy.FilterSetSpendLimit(nil) + It("should emit a limit set event", func() { + it, err := WalletProxy.FilterSetDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) evt := it.Event @@ -206,14 +206,14 @@ var _ = Describe("batchExecuteTransaction", func() { Expect(evt.Amount).To(Equal(EthToWei(1))) }) - It("should lower the spend available to 1 ETH", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should lower the available amount to 1 ETH", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(1).String())) }) - It("should have spend limit of 1 ETH", func() { - sl, err := WalletProxy.SpendLimitValue(nil) + It("should have a limit of 1 ETH", func() { + sl, err := WalletProxy.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(EthToWei(1).String())) }) @@ -339,7 +339,7 @@ const WALLET_ABI = `[ "type": "uint256" } ], - "name": "setSpendLimit", + "name": "setDailyLimit", "outputs": [], "payable": false, "stateMutability": "nonpayable", diff --git a/test/wallet/execute_transaction_test.go b/test/wallet/execute_transaction_test.go index f4e0bd46..c0a7f642 100644 --- a/test/wallet/execute_transaction_test.go +++ b/test/wallet/execute_transaction_test.go @@ -34,7 +34,7 @@ var _ = Describe("executeTransaction", func() { When("the destination address is not whitelisted", func() { BeforeEach(func() { - spendLimit, err = WalletProxy.SpendLimitAvailable(nil) + spendLimit, err = WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) privateKey, _ := crypto.GenerateKey() randomAddress = crypto.PubkeyToAddress(privateKey.PublicKey) @@ -52,7 +52,7 @@ var _ = Describe("executeTransaction", func() { It("should reduce the available daily spend balance", func() { spendLimit.Sub(spendLimit, FinneyToWei(500)) - sl, err := WalletProxy.SpendLimitAvailable(nil) + sl, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(spendLimit.String())) }) @@ -92,9 +92,9 @@ var _ = Describe("executeTransaction", func() { }) It("should reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - sl, err := WalletProxy.SpendLimitValue(nil) + sl, err := WalletProxy.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) sl.Sub(sl, FinneyToWei(500)) Expect(av.String()).To(Equal(sl.String())) @@ -116,7 +116,7 @@ var _ = Describe("executeTransaction", func() { }) }) - When("the value sent is more than the daily spend limit", func() { + When("the value sent is more than the daily limit", func() { It("should fail", func() { privateKey, _ := crypto.GenerateKey() randomAddress = crypto.PubkeyToAddress(privateKey.PublicKey) @@ -127,7 +127,7 @@ var _ = Describe("executeTransaction", func() { }) }) - When("the value sent is exactly equal to the daily spend limit", func() { + When("the value sent is exactly equal to the daily limit", func() { BeforeEach(func() { privateKey, _ := crypto.GenerateKey() randomAddress = crypto.PubkeyToAddress(privateKey.PublicKey) @@ -149,8 +149,8 @@ var _ = Describe("executeTransaction", func() { Expect(b.String()).To(Equal(EthToWei(1).String())) }) - It("should reduce the available daily spend balance to 0", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should reduce the available daily balance to 0", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("0")) }) @@ -181,7 +181,7 @@ var _ = Describe("executeTransaction", func() { }) BeforeEach(func() { - spendLimit, err = WalletProxy.SpendLimitAvailable(nil) + spendLimit, err = WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) tx, err = WalletProxy.ExecuteTransaction(Owner.TransactOpts(ethertest.WithGasLimit(100000)), randomAddress, FinneyToWei(500), nil) Expect(err).ToNot(HaveOccurred()) @@ -195,8 +195,8 @@ var _ = Describe("executeTransaction", func() { Expect(b.String()).To(Equal(FinneyToWei(500).String())) }) - It("should NOT reduce the available daily spend balance", func() { - sl, err := WalletProxy.SpendLimitAvailable(nil) + It("should NOT reduce the available daily balance", func() { + sl, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(spendLimit.String())) }) @@ -259,8 +259,8 @@ var _ = Describe("executeTransaction", func() { Expect(b.String()).To(Equal("700")) }) - It("should reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should reduce the available daily balance", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) eth, err := WalletProxy.ConvertToEther(nil, TKNBurnerAddress, big.NewInt(300)) Expect(err).ToNot(HaveOccurred()) @@ -309,8 +309,8 @@ var _ = Describe("executeTransaction", func() { Expect(b.String()).To(Equal("700")) }) - It("should reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should reduce the available daily balance", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) eth, err := WalletProxy.ConvertToEther(nil, TKNBurnerAddress, big.NewInt(300)) Expect(err).ToNot(HaveOccurred()) @@ -421,8 +421,8 @@ var _ = Describe("executeTransaction", func() { Expect(b.String()).To(Equal("1000")) }) - It("should not reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should not reduce the available daily balance", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("100000000000000000000")) }) @@ -454,8 +454,8 @@ var _ = Describe("executeTransaction", func() { Expect(b.String()).To(Equal("700")) }) - It("should not reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should not reduce the available daily balance", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("100000000000000000000")) }) @@ -495,7 +495,7 @@ var _ = Describe("executeTransaction", func() { }) It("should not reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("100000000000000000000")) }) @@ -547,10 +547,10 @@ var _ = Describe("executeTransaction", func() { Expect(b.String()).To(Equal("1000")) }) - It("should reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should reduce the available daily balance", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - sl, _ := WalletProxy.SpendLimitValue(nil) + sl, _ := WalletProxy.DailyLimitValue(nil) eth, err := WalletProxy.ConvertToEther(nil, TKNBurnerAddress, big.NewInt(300)) Expect(err).ToNot(HaveOccurred()) sl.Sub(sl, eth) //subtract converted eth from dailySppendLimit @@ -590,8 +590,8 @@ var _ = Describe("executeTransaction", func() { Expect(b.String()).To(Equal("700")) }) - It("should NOT reduce the available daily spend balance", func() { - av, err := RandomWalletProxy.SpendLimitAvailable(nil) + It("should NOT reduce the available daily balance", func() { + av, err := RandomWalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(1).String())) }) @@ -622,10 +622,10 @@ var _ = Describe("executeTransaction", func() { Expect(b.String()).To(Equal("700")) }) - It("should reduce the available daily spend balance", func() { - av, err := RandomWalletProxy.SpendLimitAvailable(nil) + It("should reduce the available daily balance", func() { + av, err := RandomWalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - sl, _ := RandomWalletProxy.SpendLimitValue(nil) + sl, _ := RandomWalletProxy.DailyLimitValue(nil) eth, err := RandomWalletProxy.ConvertToEther(nil, TKNBurnerAddress, big.NewInt(300)) Expect(err).ToNot(HaveOccurred()) sl.Sub(sl, eth) //subtract converted eth from dailySppendLimit @@ -685,7 +685,7 @@ var _ = Describe("executeTransaction", func() { }) It("should NOT reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(100).String())) }) diff --git a/test/wallet/transfer_test.go b/test/wallet/transfer_test.go index 504568b3..591e7dd5 100644 --- a/test/wallet/transfer_test.go +++ b/test/wallet/transfer_test.go @@ -34,13 +34,13 @@ var _ = Describe("transfer", func() { }) It("should reduce available transfer for today by 100 ETH", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("0")) }) - It("should update the spend available to 0", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should update the limit amount available to 0", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("0")) }) @@ -61,8 +61,8 @@ var _ = Describe("transfer", func() { Backend.Commit() }) - It("should update the spend available to 100 ETH", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should update the limit available to 100 ETH", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(100).String())) }) @@ -79,8 +79,8 @@ var _ = Describe("transfer", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should emit UpdatedSpendAvailable event", func() { - it, err := WalletProxy.FilterUpdatedAvailableLimit(nil) + It("should emit UpdatedAvailableDailyLimit event", func() { + it, err := WalletProxy.FilterUpdatedAvailableDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) _ = it.Event @@ -88,7 +88,7 @@ var _ = Describe("transfer", func() { }) It("should reduce available transfer for today by 1 Finney", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("99999000000000000000")) }) @@ -111,7 +111,7 @@ var _ = Describe("transfer", func() { }) It("should reduce available transfer for today by 1 Finney", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("99999000000000000000")) }) @@ -130,7 +130,7 @@ var _ = Describe("transfer", func() { }) It("should reduce available transfer for today by 0 Finney", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("100000000000000000000")) }) @@ -198,7 +198,7 @@ var _ = Describe("transfer", func() { }) It("should reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(AlmostEqual("99999999999951010000")) }) @@ -263,8 +263,8 @@ var _ = Describe("transfer", func() { Expect(b.String()).To(Equal("700")) }) - It("should not reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should not reduce the available daily balance", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("100000000000000000000")) }) @@ -300,8 +300,8 @@ var _ = Describe("transfer", func() { Expect(b.String()).To(Equal("700")) }) - It("should not reduce the available daily spend balance", func() { - av, err := WalletProxy.SpendLimitAvailable(nil) + It("should not reduce the available daily balance", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal("100000000000000000000")) }) diff --git a/test/wallet/whitelist_test.go b/test/wallet/whitelist_test.go index 5a65984a..70dfe736 100644 --- a/test/wallet/whitelist_test.go +++ b/test/wallet/whitelist_test.go @@ -13,7 +13,7 @@ import ( var _ = Describe("initializeWhitelist", func() { BeforeEach(func() { - tx, err := WalletProxy.SetSpendLimit(Owner.TransactOpts(), EthToWei(1)) + tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) From 74c959c4cd59a962f69d457d361d9558adf1f10b Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 28 Oct 2020 17:40:55 +0100 Subject: [PATCH 10/66] Fix wallet constructor test supporting proxy --- test/wallet/constructor_test.go | 53 +++++++++++---------------------- 1 file changed, 18 insertions(+), 35 deletions(-) diff --git a/test/wallet/constructor_test.go b/test/wallet/constructor_test.go index 6d53f668..1bb7a4e2 100644 --- a/test/wallet/constructor_test.go +++ b/test/wallet/constructor_test.go @@ -1,7 +1,6 @@ package wallet_test import ( - "github.com/ethereum/go-ethereum/common" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/tokencard/contracts/v3/pkg/bindings" @@ -12,40 +11,24 @@ import ( var _ = Describe("wallet initialization", func() { - Context("the stablecoin should be in the whitelist", func() { - It("Should update the tokens map", func() { - symbol, _, _, available, loadable, _, _, err := TokenWhitelist.GetTokenInfo(nil, StablecoinAddress) - Expect(err).ToNot(HaveOccurred()) - Expect(symbol).To(Equal("USDC")) - Expect(available).To(BeTrue()) - Expect(loadable).To(BeTrue()) - }) - }) - - When("the stablecoing is removed from the list", func() { - - BeforeEach(func() { - tx, err := TokenWhitelist.RemoveTokens(ControllerAdmin.TransactOpts(), []common.Address{StablecoinAddress}) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("Should NOT initialize a new wallet porxy", func() { - RandomProxyAddress, tx, _, err := upgradeability.DeployUpgradeabilityProxy(BankAccount.TransactOpts(), Backend, WalletImplementationAddress, nil) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - RandomProxy, err := bindings.NewWallet(RandomProxyAddress, Backend) - tx, err = RandomProxy.InitializeWallet(BankAccount.TransactOpts(ethertest.WithGasLimit(7000000)), Owner.Address(), false, ENSRegistryAddress, TokenWhitelistNode, ControllerNode, LicenceNode, EthToWei(100)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("no stablecoin")) - }) - + It("Should deploy a new wallet", func() { + RandomProxyAddress, tx, _, err := upgradeability.DeployUpgradeabilityProxy( + BankAccount.TransactOpts(), + Backend, + WalletImplementationAddress, + nil, + ) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + + RandomProxy, err := bindings.NewWallet(RandomProxyAddress, Backend) + tx, err = RandomProxy.InitializeWallet(BankAccount.TransactOpts(ethertest.WithGasLimit(7000000)), Owner.Address(), false, ENSRegistryAddress, TokenWhitelistNode, ControllerNode, LicenceNode, EthToWei(100)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + //returnData, _ := ethCall(tx) + //Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("no stablecoin")) }) }) From ceb45044f84409ea22a026969430103875778697 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 5 Nov 2020 12:36:47 +0100 Subject: [PATCH 11/66] wallet: support stablecoin daily limit --- contracts/wallet.sol | 61 +++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 35 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 82b979e0..cff1d365 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -255,8 +255,11 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista bool private _controllerConfirmationRequired; // Indicates whether the limit is set requires 2FA to be updated. function _initializeDailyLimit(uint256 _limit, bytes32 _tokenWhitelistNode) internal initializer { - _value = _limit; - _available = _limit; + (, uint256 stablecoinMagnitude, , , , , ) = _getStablecoinInfo(); + require(stablecoinMagnitude > 0, "no stablecoin"); + uint limitBaseUnits = _limit * stablecoinMagnitude; + _value = limitBaseUnits; + _available = limitBaseUnits; _updateTimestamp = now; _pending = 0; _controllerConfirmationRequired = false; @@ -559,40 +562,30 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe } } - /// @dev Convert ERC20 token amount to the corresponding ether amount. - /// @param _token ERC20 token contract address. - /// @param _amount amount of token in base units. - function convertToEther(address _token, uint256 _amount) public view returns (uint256) { - // Store the token in memory to save map entry lookup gas. - (, uint256 magnitude, uint256 rate, bool available, , , ) = _getTokenInfo(_token); - // If the token exists require that its rate is not zero. - if (available) { - require(rate != 0, "rate=0"); - // Safely convert the token amount to ether based on the exchange rate. - return _amount.mul(rate).div(magnitude); - } - return 0; - } - /// @dev Convert ether or ERC20 token amount to the corresponding stablecoin amount. /// @param _token ERC20 token contract address. /// @param _amount amount of token in base units. - function convertToStablecoin(address _token, uint256 _amount) public view returns (uint256) { + /// @return the equivalent amount in stablecoin base units & 0 if the token is not available. + function convertToStablecoin(address _token, uint _amount) public view returns (uint) { // avoid the unnecessary calculations if the token to be loaded is the stablecoin itself if (_token == _stablecoin()) { return _amount; } - uint256 amountToSend = _amount; - // 0x0 represents ether + uint amountToSend = _amount; + + // convert token amount to ETH first (0x0 represents ether) if (_token != address(0)) { - // convert to eth first, same as convertToEther() // Store the token in memory to save map entry lookup gas. (, uint256 magnitude, uint256 rate, bool available, , , ) = _getTokenInfo(_token); - // require that token both exists in the whitelist and its rate is not zero. - require(available, "token not available"); + + // if the token does NOT exist in the whitelist then return 0 + if(!available){ + return 0; + } + // if it exists then require that its rate is not zero. require(rate != 0, "rate=0"); - // Safely convert the token amount to ether based on the exchangeonly rate. + // Safely convert the token amount to ether based on the exchange rate. amountToSend = _amount.mul(rate).div(magnitude); } // _amountToSend now is in ether @@ -626,10 +619,11 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe uint256 amount; (to, amount) = _getERC20RecipientAndAmount(_destination, _data); if (!whitelistMap[to]) { + // Convert token amount to stablecoin value. // If the address (of the token contract, e.g) is not in the TokenWhitelist used by the convert method - // then etherValue will be zero - uint256 etherValue = convertToEther(_destination, amount); - _enforceDailyLimit(etherValue); + // ...then stablecoinValue will be zero + uint stablecoinValue = convertToStablecoin(_destination, amount); + _enforceDailyLimit(stablecoinValue); } // use callOptionalReturn provided in SafeERC20 in case the ERC20 method // returns false instead of reverting! @@ -675,15 +669,12 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe // If address is not whitelisted, take daily limit into account. if (!whitelistMap[_to]) { - // initialize ether value in case the asset is ETH - uint256 etherValue = _amount; - // Convert token amount to ether value if asset is an ERC20 token. - if (_asset != address(0)) { - etherValue = convertToEther(_asset, _amount); - } - // Check against the daily spent limit and update accordingly + // Convert token amount to stablecoin value. + // If the address (of the token contract) is not in the TokenWhitelist used by the convert method... + // ...then stablecoinValue will be zero + uint256 stablecoinValue = convertToStablecoin(_asset, _amount); // Check against the daily spent limit and update accordingly, require that the value is under remaining limit. - _enforceDailyLimit(etherValue); + _enforceDailyLimit(stablecoinValue); } // Transfer token or ether based on the provided address. _safeTransfer(_to, _asset, _amount); From 4471a42ee7f612a6c0d9fcac73e676f4260ca37b Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 5 Nov 2020 12:39:26 +0100 Subject: [PATCH 12/66] walletCache: add stablecoin daily limit clarifications --- contracts/walletCache.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/walletCache.sol b/contracts/walletCache.sol index 1beb1ac8..1e12c76e 100644 --- a/contracts/walletCache.sol +++ b/contracts/walletCache.sol @@ -48,7 +48,7 @@ contract WalletCache is ENSResolvable, Controllable { bytes32 public walletDeployerNode = _DEFAULT_WALLET_DEPLOYER_NODE; address public walletImplementation; - uint256 public defaultDailyLimit; + uint256 public defaultDailyLimit; // in stablecoin absolute value, not base units. (Example: 10k USD) address payable[] public cachedWallets; From 0f9e32082f24b4cf17730efb33ea716d249a9a69 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Fri, 6 Nov 2020 12:04:09 +0100 Subject: [PATCH 13/66] wallet: fix daily limit initialization --- contracts/wallet.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index cff1d365..f8dfeeeb 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -255,6 +255,7 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista bool private _controllerConfirmationRequired; // Indicates whether the limit is set requires 2FA to be updated. function _initializeDailyLimit(uint256 _limit, bytes32 _tokenWhitelistNode) internal initializer { + _initializeTokenWhitelistable(_tokenWhitelistNode); (, uint256 stablecoinMagnitude, , , , , ) = _getStablecoinInfo(); require(stablecoinMagnitude > 0, "no stablecoin"); uint limitBaseUnits = _limit * stablecoinMagnitude; @@ -263,7 +264,6 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista _updateTimestamp = now; _pending = 0; _controllerConfirmationRequired = false; - _initializeTokenWhitelistable(_tokenWhitelistNode); } /// @dev Confirm pending set daily limit operation. From b474f68fa404246284a0e2337e0c9d733286cd9b Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Fri, 6 Nov 2020 12:17:42 +0100 Subject: [PATCH 14/66] wallet: merge set and update daily limit in one function; remove controller confimation required method --- contracts/wallet.sol | 35 ++++++++++------------------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index f8dfeeeb..4d49cdf3 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -252,7 +252,6 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista uint256 private _available; // The remaining amount available in the current 24-hour window. uint256 private _pending; // The pending new limit value requested in the latest limit update submission. uint256 private _updateTimestamp; // Denotes the time that the available daily limit was last updated. - bool private _controllerConfirmationRequired; // Indicates whether the limit is set requires 2FA to be updated. function _initializeDailyLimit(uint256 _limit, bytes32 _tokenWhitelistNode) internal initializer { _initializeTokenWhitelistable(_tokenWhitelistNode); @@ -261,9 +260,8 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista uint limitBaseUnits = _limit * stablecoinMagnitude; _value = limitBaseUnits; _available = limitBaseUnits; + _pending = limitBaseUnits; _updateTimestamp = now; - _pending = 0; - _controllerConfirmationRequired = false; } /// @dev Confirm pending set daily limit operation. @@ -280,11 +278,6 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista return _pending; } - /// @dev Returns if the daily limit been initialized. - function dailyLimitControllerConfirmationRequired() external view returns (bool) { - return _controllerConfirmationRequired; - } - /// @dev Get the daily limit value. function dailyLimitValue() external view returns (uint256) { return _value; @@ -300,26 +293,18 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista } } - /// @dev Sets the initial daily (aka transfer) limit for non-whitelisted addresses. - /// @param _amount is the daily limit amount in wei. - function setDailyLimit(uint256 _amount) external onlyOwnerOrSelf { - // Require that the daily limit has not been set yet. - require(!_controllerConfirmationRequired, "limit already set"); - // Modify daily limit based on the provided value. - _modifyLimit(_amount); - // Flag the operation as set. - _controllerConfirmationRequired = true; - emit SetDailyLimit(msg.sender, _amount); - } - /// @dev Submit a daily transfer limit update for non-whitelisted addresses. - /// @param _amount is the daily limit amount in wei. + /// @param _amount is the daily limit amount in stablecoin base units. function submitDailyLimitUpdate(uint256 _amount) external onlyOwnerOrSelf { - // Require that the daily limit has been set. - require(_controllerConfirmationRequired, "limit has not been set yet"); // Assign the provided amount to pending daily limit. _pending = _amount; - emit SubmittedDailyLimitUpdate(_amount); + // If the new limit is lower, then there is no need for 2FA. + if (_amount <= _value){ + _modifyLimit(_amount); + emit SetDailyLimit(msg.sender, _amount); + } else { + emit SubmittedDailyLimitUpdate(_amount); + } } /// @dev Use up amount within the daily limit. Will fail if amount is larger than available limit. @@ -331,7 +316,7 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista } /// @dev Modify the daily and available limits based on the provided value. - /// @dev _amount is the daily limit amount in wei. + /// @dev _amount is the daily limit amount in stablecoin base units. function _modifyLimit(uint256 _amount) private { // Account for the limit daily reset. _updateAvailableDailyLimit(); From 8c3b37c0dbab2a6a73cb804b23b9e6efe5dc98ee Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Fri, 6 Nov 2020 14:35:07 +0100 Subject: [PATCH 15/66] walletDeployer: use new function for daily limit --- contracts/walletDeployer.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/walletDeployer.sol b/contracts/walletDeployer.sol index 8590b8a5..8db880d0 100644 --- a/contracts/walletDeployer.sol +++ b/contracts/walletDeployer.sol @@ -86,7 +86,7 @@ contract WalletDeployer is ENSResolvable, Controllable { // Sets up the security settings as per the _oldWallet if (_initializedDailyLimit) { - Wallet(wallet).setDailyLimit(_dailyLimit); + Wallet(wallet).submitDailyLimitUpdate(_dailyLimit); } if (_initializedWhitelist) { Wallet(wallet).setWhitelist(_whitelistedAddresses); From f0a875a843909a9b73fad905e4a3621c0d786402 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Fri, 6 Nov 2020 15:04:19 +0100 Subject: [PATCH 16/66] wallet: add new event InitializedDailyLimit and refactor other events --- contracts/wallet.sol | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 4d49cdf3..0f01396d 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -244,6 +244,7 @@ contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelistable { using SafeMath for uint256; + event InitializedDailyLimit(uint _amount, uint _nextReset); event SetDailyLimit(address _sender, uint256 _amount); event SubmittedDailyLimitUpdate(uint256 _amount); event UpdatedAvailableDailyLimit(); @@ -262,6 +263,7 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista _available = limitBaseUnits; _pending = limitBaseUnits; _updateTimestamp = now; + emit InitializedDailyLimit(limitBaseUnits, _updateTimestamp.add(24 hours)); } /// @dev Confirm pending set daily limit operation. @@ -270,7 +272,6 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista require(_pending == _amount, "confirmed/submitted limit mismatch"); // Modify daily limit based on the pending value. _modifyLimit(_pending); - emit SetDailyLimit(msg.sender, _amount); } /// @dev Returns the active daily limit change. @@ -301,7 +302,6 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista // If the new limit is lower, then there is no need for 2FA. if (_amount <= _value){ _modifyLimit(_amount); - emit SetDailyLimit(msg.sender, _amount); } else { emit SubmittedDailyLimitUpdate(_amount); } @@ -318,14 +318,13 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista /// @dev Modify the daily and available limits based on the provided value. /// @dev _amount is the daily limit amount in stablecoin base units. function _modifyLimit(uint256 _amount) private { - // Account for the limit daily reset. - _updateAvailableDailyLimit(); // Set the daily limit to the provided amount. _value = _amount; // Lower the available limit if it's higher than the new daily limit. if (_available > _value) { _available = _value; } + emit SetDailyLimit(msg.sender, _amount); } /// @dev Update available limit based on the daily reset. From 6d61cfb8713419a596f1abbe0b77a6001cc8656b Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Fri, 6 Nov 2020 16:43:50 +0100 Subject: [PATCH 17/66] wallet: refactor UpdatedAvailableDailyLimit and resetTimestamp; change _modifyLimit to _setLimit --- contracts/wallet.sol | 45 ++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 0f01396d..e84c7b88 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -247,12 +247,12 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista event InitializedDailyLimit(uint _amount, uint _nextReset); event SetDailyLimit(address _sender, uint256 _amount); event SubmittedDailyLimitUpdate(uint256 _amount); - event UpdatedAvailableDailyLimit(); + event UpdatedAvailableDailyLimit(uint _amount, uint _nextReset); uint256 private _value; // The daily limit amount. uint256 private _available; // The remaining amount available in the current 24-hour window. uint256 private _pending; // The pending new limit value requested in the latest limit update submission. - uint256 private _updateTimestamp; // Denotes the time that the available daily limit was last updated. + uint256 private _resetTimestamp; // Denotes the future timestamp when the available daily limit is due to reset again. function _initializeDailyLimit(uint256 _limit, bytes32 _tokenWhitelistNode) internal initializer { _initializeTokenWhitelistable(_tokenWhitelistNode); @@ -262,16 +262,23 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista _value = limitBaseUnits; _available = limitBaseUnits; _pending = limitBaseUnits; - _updateTimestamp = now; - emit InitializedDailyLimit(limitBaseUnits, _updateTimestamp.add(24 hours)); + _resetTimestamp = now.add(24 hours); + emit InitializedDailyLimit(limitBaseUnits, _resetTimestamp); } /// @dev Confirm pending set daily limit operation. function confirmDailyLimitUpdate(uint256 _amount) external onlyController { // Require that pending and confirmed limits are the same. - require(_pending == _amount, "confirmed/submitted limit mismatch"); - // Modify daily limit based on the pending value. - _modifyLimit(_pending); + require(_pending == _amount, "confirmed or submitted limit mismatch"); + // The new limit should be always higher then the current one otherwise no 2FA would be needed + require(_amount > _value, "limit should be greater than current one"); + // Increase the available amount... + _available = _amount; + // ...and reset the 24-hour window + _resetTimestamp = now.add(24 hours); + emit UpdatedAvailableDailyLimit(_available, _resetTimestamp); + // Set daily limit based on the pending value. + _setLimit(_pending); } /// @dev Returns the active daily limit change. @@ -287,7 +294,7 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista /// @dev Returns the available daily limit/balance, accounts for daily limit reset. /// @return amount of available to spend within the current day in base units. function dailyLimitAvailable() external view returns (uint256) { - if (now > _updateTimestamp.add(24 hours)) { + if (now > _resetTimestamp) { return _value; } else { return _available; @@ -301,7 +308,12 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista _pending = _amount; // If the new limit is lower, then there is no need for 2FA. if (_amount <= _value){ - _modifyLimit(_amount); + // Decrease the available amount if the new limit is lower than it + if (_amount < _available) { + _available = _amount; + emit UpdatedAvailableDailyLimit(_available, _resetTimestamp); + } + _setLimit(_amount); } else { emit SubmittedDailyLimitUpdate(_amount); } @@ -313,28 +325,25 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista _updateAvailableDailyLimit(); require(_available >= _amount, "available smaller than amount"); _available = _available.sub(_amount); + emit UpdatedAvailableDailyLimit(_available, _resetTimestamp); } /// @dev Modify the daily and available limits based on the provided value. /// @dev _amount is the daily limit amount in stablecoin base units. - function _modifyLimit(uint256 _amount) private { + function _setLimit(uint _amount) private { // Set the daily limit to the provided amount. _value = _amount; - // Lower the available limit if it's higher than the new daily limit. - if (_available > _value) { - _available = _value; - } - emit SetDailyLimit(msg.sender, _amount); + emit SetDailyLimit(msg.sender, _value); } /// @dev Update available limit based on the daily reset. function _updateAvailableDailyLimit() private { - if (now > _updateTimestamp.add(24 hours)) { + if (now > _resetTimestamp) { // Update the current timestamp. - _updateTimestamp = now; + _resetTimestamp = now.add(24 hours); // Set the available limit to the current daily limit. _available = _value; - emit UpdatedAvailableDailyLimit(); + emit UpdatedAvailableDailyLimit(_available, _resetTimestamp); } } } From dc00accd107f784d7f33c5d85bc45ceb018f3357 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Fri, 6 Nov 2020 16:54:33 +0100 Subject: [PATCH 18/66] wallet: rename _value to _dailyLimit, and _pending to _pendingLimit --- contracts/wallet.sol | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index e84c7b88..92921b7a 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -249,9 +249,9 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista event SubmittedDailyLimitUpdate(uint256 _amount); event UpdatedAvailableDailyLimit(uint _amount, uint _nextReset); - uint256 private _value; // The daily limit amount. - uint256 private _available; // The remaining amount available in the current 24-hour window. - uint256 private _pending; // The pending new limit value requested in the latest limit update submission. + uint256 private _dailyLimit; // The daily limit amount. + uint256 private _available; // The remaining amount available for spending in the current 24-hour window. + uint256 private _pendingLimit; // The pending new limit value requested in the latest limit update submission. uint256 private _resetTimestamp; // Denotes the future timestamp when the available daily limit is due to reset again. function _initializeDailyLimit(uint256 _limit, bytes32 _tokenWhitelistNode) internal initializer { @@ -259,9 +259,9 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista (, uint256 stablecoinMagnitude, , , , , ) = _getStablecoinInfo(); require(stablecoinMagnitude > 0, "no stablecoin"); uint limitBaseUnits = _limit * stablecoinMagnitude; - _value = limitBaseUnits; + _dailyLimit = limitBaseUnits; _available = limitBaseUnits; - _pending = limitBaseUnits; + _pendingLimit = limitBaseUnits; _resetTimestamp = now.add(24 hours); emit InitializedDailyLimit(limitBaseUnits, _resetTimestamp); } @@ -269,33 +269,33 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista /// @dev Confirm pending set daily limit operation. function confirmDailyLimitUpdate(uint256 _amount) external onlyController { // Require that pending and confirmed limits are the same. - require(_pending == _amount, "confirmed or submitted limit mismatch"); + require(_pendingLimit == _amount, "confirmed or submitted limit mismatch"); // The new limit should be always higher then the current one otherwise no 2FA would be needed - require(_amount > _value, "limit should be greater than current one"); + require(_amount > _dailyLimit, "limit should be greater than current one"); // Increase the available amount... _available = _amount; // ...and reset the 24-hour window _resetTimestamp = now.add(24 hours); emit UpdatedAvailableDailyLimit(_available, _resetTimestamp); // Set daily limit based on the pending value. - _setLimit(_pending); + _setLimit(_pendingLimit); } /// @dev Returns the active daily limit change. function dailyLimitPending() external view returns (uint256) { - return _pending; + return _pendingLimit; } /// @dev Get the daily limit value. function dailyLimitValue() external view returns (uint256) { - return _value; + return _dailyLimit; } /// @dev Returns the available daily limit/balance, accounts for daily limit reset. /// @return amount of available to spend within the current day in base units. function dailyLimitAvailable() external view returns (uint256) { if (now > _resetTimestamp) { - return _value; + return _dailyLimit; } else { return _available; } @@ -305,9 +305,9 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista /// @param _amount is the daily limit amount in stablecoin base units. function submitDailyLimitUpdate(uint256 _amount) external onlyOwnerOrSelf { // Assign the provided amount to pending daily limit. - _pending = _amount; + _pendingLimit = _amount; // If the new limit is lower, then there is no need for 2FA. - if (_amount <= _value){ + if (_amount <= _dailyLimit){ // Decrease the available amount if the new limit is lower than it if (_amount < _available) { _available = _amount; @@ -332,8 +332,8 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista /// @dev _amount is the daily limit amount in stablecoin base units. function _setLimit(uint _amount) private { // Set the daily limit to the provided amount. - _value = _amount; - emit SetDailyLimit(msg.sender, _value); + _dailyLimit = _amount; + emit SetDailyLimit(msg.sender, _dailyLimit); } /// @dev Update available limit based on the daily reset. @@ -342,7 +342,7 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista // Update the current timestamp. _resetTimestamp = now.add(24 hours); // Set the available limit to the current daily limit. - _available = _value; + _available = _dailyLimit; emit UpdatedAvailableDailyLimit(_available, _resetTimestamp); } } From cce1ae150a873cbfe64de6c5214a0d867ef7c3af Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Mon, 9 Nov 2020 18:14:04 +0100 Subject: [PATCH 19/66] wallet: remove symbols from requires, add stablecoin conversion and refactor --- contracts/wallet.sol | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 92921b7a..699f4cea 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -40,7 +40,7 @@ import "./internals/transferrable.sol"; contract ControllableOwnable is Controllable, Ownable { /// @dev Check if the sender is the Owner or one of the Controllers modifier onlyOwnerOrController() { - require(_isOwner(msg.sender) || _isController(msg.sender), "only owner||controller"); + require(_isOwner(msg.sender) || _isController(msg.sender), "Only owner or controller"); _; } } @@ -51,7 +51,7 @@ contract ControllableOwnable is Controllable, Ownable { contract SelfCallableOwnable is Ownable { /// @dev Check if the sender is the Owner or self modifier onlyOwnerOrSelf() { - require(_isOwner(msg.sender) || msg.sender == address(this), "only owner||self"); + require(_isOwner(msg.sender) || msg.sender == address(this), "Only owner or self"); _; } } @@ -244,10 +244,10 @@ contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelistable { using SafeMath for uint256; - event InitializedDailyLimit(uint _amount, uint _nextReset); + event InitializedDailyLimit(uint256 _amount, uint256 _nextReset); event SetDailyLimit(address _sender, uint256 _amount); event SubmittedDailyLimitUpdate(uint256 _amount); - event UpdatedAvailableDailyLimit(uint _amount, uint _nextReset); + event UpdatedAvailableDailyLimit(uint256 _amount, uint256 _nextReset); uint256 private _dailyLimit; // The daily limit amount. uint256 private _available; // The remaining amount available for spending in the current 24-hour window. @@ -258,7 +258,7 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista _initializeTokenWhitelistable(_tokenWhitelistNode); (, uint256 stablecoinMagnitude, , , , , ) = _getStablecoinInfo(); require(stablecoinMagnitude > 0, "no stablecoin"); - uint limitBaseUnits = _limit * stablecoinMagnitude; + uint256 limitBaseUnits = _limit * stablecoinMagnitude; _dailyLimit = limitBaseUnits; _available = limitBaseUnits; _pendingLimit = limitBaseUnits; @@ -271,6 +271,7 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista // Require that pending and confirmed limits are the same. require(_pendingLimit == _amount, "confirmed or submitted limit mismatch"); // The new limit should be always higher then the current one otherwise no 2FA would be needed + // this is done to avoid abuse e.g. resetting the current daily limit and thus resetting the available amount require(_amount > _dailyLimit, "limit should be greater than current one"); // Increase the available amount... _available = _amount; @@ -306,16 +307,16 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista function submitDailyLimitUpdate(uint256 _amount) external onlyOwnerOrSelf { // Assign the provided amount to pending daily limit. _pendingLimit = _amount; - // If the new limit is lower, then there is no need for 2FA. - if (_amount <= _dailyLimit){ + // If the new limit is lower, then there is no need for 2FA. + if (_amount <= _dailyLimit) { // Decrease the available amount if the new limit is lower than it if (_amount < _available) { _available = _amount; emit UpdatedAvailableDailyLimit(_available, _resetTimestamp); } - _setLimit(_amount); + _setLimit(_amount); } else { - emit SubmittedDailyLimitUpdate(_amount); + emit SubmittedDailyLimitUpdate(_amount); } } @@ -330,7 +331,7 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista /// @dev Modify the daily and available limits based on the provided value. /// @dev _amount is the daily limit amount in stablecoin base units. - function _setLimit(uint _amount) private { + function _setLimit(uint256 _amount) private { // Set the daily limit to the provided amount. _dailyLimit = _amount; emit SetDailyLimit(msg.sender, _dailyLimit); @@ -559,13 +560,13 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe /// @param _token ERC20 token contract address. /// @param _amount amount of token in base units. /// @return the equivalent amount in stablecoin base units & 0 if the token is not available. - function convertToStablecoin(address _token, uint _amount) public view returns (uint) { + function convertToStablecoin(address _token, uint256 _amount) public view returns (uint256) { // avoid the unnecessary calculations if the token to be loaded is the stablecoin itself if (_token == _stablecoin()) { return _amount; } - uint amountToSend = _amount; + uint256 amountToSend = _amount; // convert token amount to ETH first (0x0 represents ether) if (_token != address(0)) { @@ -573,7 +574,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe (, uint256 magnitude, uint256 rate, bool available, , , ) = _getTokenInfo(_token); // if the token does NOT exist in the whitelist then return 0 - if(!available){ + if (!available) { return 0; } // if it exists then require that its rate is not zero. @@ -603,7 +604,9 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe // If value is send across as a part of this executeTransaction, this will be sent to any payable // destination. As a result enforceLimit if destination is not whitelisted. if (!whitelistMap[_destination]) { - _enforceDailyLimit(_value); + // Convert ETH value to stablecoin, 0x0 denotes ETH. + uint256 stablecoinValue = convertToStablecoin(address(0), _value); + _enforceDailyLimit(stablecoinValue); } // Check if the destination is a Contract and it is one of our supported tokens if (address(_destination).isContract() && _isTokenAvailable(_destination)) { @@ -615,7 +618,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe // Convert token amount to stablecoin value. // If the address (of the token contract, e.g) is not in the TokenWhitelist used by the convert method // ...then stablecoinValue will be zero - uint stablecoinValue = convertToStablecoin(_destination, amount); + uint256 stablecoinValue = convertToStablecoin(_destination, amount); _enforceDailyLimit(stablecoinValue); } // use callOptionalReturn provided in SafeERC20 in case the ERC20 method From 1d7541f9c8ed1158878388577f007a2fc3a7e215 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Mon, 9 Nov 2020 18:15:27 +0100 Subject: [PATCH 20/66] Remove unused tests --- test/wallet/convert_to_ether_test.go | 107 --------------------------- 1 file changed, 107 deletions(-) delete mode 100644 test/wallet/convert_to_ether_test.go diff --git a/test/wallet/convert_to_ether_test.go b/test/wallet/convert_to_ether_test.go deleted file mode 100644 index a125e3b3..00000000 --- a/test/wallet/convert_to_ether_test.go +++ /dev/null @@ -1,107 +0,0 @@ -package wallet_test - -import ( - "math" - "math/big" - - "github.com/ethereum/go-ethereum/common" - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/tokencard/contracts/v3/test/shared" -) - -var _ = Describe("convertToEther", func() { - Context("When the token is already supported", func() { - BeforeEach(func() { - tx, err := TokenWhitelist.AddTokens( - ControllerAdmin.TransactOpts(), - []common.Address{common.HexToAddress("0xfe209bdE5CA32fa20E6728A005F26D651FFF5982")}, - StringsToByte32("TKN"), - []*big.Int{DecimalsToMagnitude(big.NewInt(8))}, - []bool{true}, - []bool{true}, - big.NewInt(20180913153211), - ) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - Context("When exchange rate is 0", func() { - It("Should fail", func() { - _, err := WalletProxy.ConvertToEther(nil, common.HexToAddress("0xfe209bdE5CA32fa20E6728A005F26D651FFF5982"), big.NewInt(100)) - Expect(err).To(HaveOccurred()) - }) - }) - Context("When exchange rate is NOT 0", func() { - BeforeEach(func() { - tx, err := TokenWhitelist.UpdateTokenRate( - ControllerAdmin.TransactOpts(), - common.HexToAddress("0xfe209bdE5CA32fa20E6728A005F26D651FFF5982"), - big.NewInt(int64(0.001633*math.Pow10(18))), - big.NewInt(20180913153211), - ) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - Context("When overflow occurs", func() { - It("Should trigger assert() (empty output)", func() { - _, err := WalletProxy.ConvertToEther(nil, common.HexToAddress("0xfe209bdE5CA32fa20E6728A005F26D651FFF5982"), big.NewInt(-1)) - Expect(err.Error()).To(ContainSubstring("SafeMath: multiplication overflow")) - }) - }) - Context("When overflow does not occur", func() { - It("Should return 0.01(amount)*0.001633(rate)*10^18(in wei)", func() { - value, err := WalletProxy.ConvertToEther(nil, common.HexToAddress("0xfe209bdE5CA32fa20E6728A005F26D651FFF5982"), big.NewInt(int64(0.01*math.Pow10(8)))) - Expect(err).ToNot(HaveOccurred()) - Expect(value.String()).To(Equal("16330000000000")) - }) - }) - }) - }) - - Context("When the token is not supported", func() { - It("Should return 0", func() { - value, err := WalletProxy.ConvertToEther(nil, common.HexToAddress("0x1"), big.NewInt(100)) - Expect(err).ToNot(HaveOccurred()) - Expect(value.String()).To(Equal("0")) - }) - }) - - When("ether is converted to ether", func() { - - BeforeEach(func() { - tx, err := TokenWhitelist.AddTokens( - ControllerAdmin.TransactOpts(), - []common.Address{common.HexToAddress("0x0")}, - StringsToByte32("ETH"), - []*big.Int{DecimalsToMagnitude(big.NewInt(18))}, - []bool{true}, - []bool{true}, - big.NewInt(20180913153211), - ) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - BeforeEach(func() { - tx, err := TokenWhitelist.UpdateTokenRate( - ControllerAdmin.TransactOpts(), - common.HexToAddress("0x0"), - EthToWei(1), - big.NewInt(20180913153211), - ) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("Should return the same amount", func() { - value, err := WalletProxy.ConvertToEther(nil, common.HexToAddress("0x0"), big.NewInt(100)) - Expect(err).ToNot(HaveOccurred()) - Expect(value.String()).To(Equal("100")) - }) - - }) - -}) From 84fb30989620064b2429c8551c849f79452e0bed Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Mon, 9 Nov 2020 18:16:30 +0100 Subject: [PATCH 21/66] Switch test stablecoin from USDC to DAI (move to 18 decimals) --- test/shared/backend_setup.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/shared/backend_setup.go b/test/shared/backend_setup.go index b0d772db..490747ea 100644 --- a/test/shared/backend_setup.go +++ b/test/shared/backend_setup.go @@ -550,7 +550,7 @@ func InitializeBackend() error { } // Add the Stablecoin token to the oracle list. - tx, err = TokenWhitelist.AddTokens(ControllerAdmin.TransactOpts(), []common.Address{StablecoinAddress}, StringsToByte32("USDC"), []*big.Int{ExponentiateDecimals(6)}, []bool{true}, []bool{true}, big.NewInt(20180913153211)) + tx, err = TokenWhitelist.AddTokens(ControllerAdmin.TransactOpts(), []common.Address{StablecoinAddress}, StringsToByte32("DAI"), []*big.Int{ExponentiateDecimals(18)}, []bool{true}, []bool{true}, big.NewInt(20180913153211)) if err != nil { return err } From 759b78c872045681f5b6b44d95f4c24ff15e2849 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Mon, 9 Nov 2020 18:18:18 +0100 Subject: [PATCH 22/66] Fix upgradeable tests --- test/upgradeable/uninitialized_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/upgradeable/uninitialized_test.go b/test/upgradeable/uninitialized_test.go index 75bd206c..1182e938 100644 --- a/test/upgradeable/uninitialized_test.go +++ b/test/upgradeable/uninitialized_test.go @@ -35,12 +35,12 @@ var _ = Describe("uninitialized", func() { }) It("Should fail it when there's onlyOwnerOrSelf()", func() { - tx, err = ProxyWallet.SetDailyLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(1000)) + tx, err = ProxyWallet.SubmitDailyLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(1000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("only owner||self")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("only owner or self")) }) It("Should fail it when there's onlyController()", func() { From f953ec9385cbf9eb5c990f3b0e0a25a5c4da4130 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Mon, 9 Nov 2020 18:18:35 +0100 Subject: [PATCH 23/66] Fix wallet-deployer tests --- test/wallet-deployer/cache_wallet_test.go | 4 +-- test/wallet-deployer/migrate_wallet_test.go | 33 ++++++++++--------- .../wallet_deployer_suite_test.go | 2 +- test/wallet-deployer/wallet_deployer_test.go | 12 +++---- 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/test/wallet-deployer/cache_wallet_test.go b/test/wallet-deployer/cache_wallet_test.go index 7b00a1d6..e830c964 100644 --- a/test/wallet-deployer/cache_wallet_test.go +++ b/test/wallet-deployer/cache_wallet_test.go @@ -14,10 +14,10 @@ var _ = Describe("Cache Wallet", func() { When("no Wallets are cached", func() { - It("should have a default daily limit of 1 ETH", func() { + It("should have a default daily limit of 10000 USD", func() { sl, err := WalletCache.DefaultDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(EthToWei(1).String())) + Expect(sl.String()).To(Equal(big.NewInt(10000).String())) }) It("should point to the right tokenwhitelist node name", func() { diff --git a/test/wallet-deployer/migrate_wallet_test.go b/test/wallet-deployer/migrate_wallet_test.go index 591d3ade..f50f1fe6 100644 --- a/test/wallet-deployer/migrate_wallet_test.go +++ b/test/wallet-deployer/migrate_wallet_test.go @@ -53,11 +53,11 @@ var _ = Describe("Migrate Wallet", func() { It("should NOT update the daily limit", func() { sl, err := MigratedWallet.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(EthToWei(1).String())) + Expect(sl.String()).To(Equal(MweiToWei(10000).String())) }) }) - When("no wallets are cached and a controller migrates a Wallet and send 1000 wei", func() { + When("no wallets are cached and a controller migrates a Wallet and sends 1000 wei", func() { var RandomProxyAddress common.Address var RandomOwner common.Address @@ -70,7 +70,16 @@ var _ = Describe("Migrate Wallet", func() { RandomProxyAddress = deployInitProxy(RandomOwner, EthToWei(2)) - tx, err = WalletDeployer.MigrateWallet(Controller.TransactOpts(ethertest.WithValue(big.NewInt(1000))), RandomOwner, RandomProxyAddress, true, true, EthToWei(2), []common.Address{common.HexToAddress("0x1"), common.HexToAddress("0x2")}) + tx, err = WalletDeployer.MigrateWallet( + Controller.TransactOpts(ethertest.WithValue(big.NewInt(1000))), + RandomOwner, + RandomProxyAddress, + true, + true, + MweiToWei(5000), + []common.Address{common.HexToAddress("0x1"), + common.HexToAddress("0x2")}, + ) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -143,25 +152,19 @@ var _ = Describe("Migrate Wallet", func() { evt := it.Event Expect(it.Next()).To(BeFalse()) Expect(evt.Sender).To(Equal(WalletDeployerAddress)) - Expect(evt.Amount).To(Equal(EthToWei(2))) + Expect(evt.Amount).To(Equal(MweiToWei(5000))) }) - It("should keep the available amount to 1 ETH", func() { + It("should decrease the available amount to 5k USD", func() { av, err := MigratedWallet.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(EthToWei(1).String())) + Expect(av.String()).To(Equal(MweiToWei(5000).String())) }) - It("should update the daily limit to 2 ETH", func() { + It("should decrement the daily limit to 5k USD", func() { sl, err := MigratedWallet.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(EthToWei(2).String())) - }) - - It("should update the dailyLimitControllerConfirmationRequired flag", func() { - initialized, err := MigratedWallet.DailyLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(initialized).To(BeTrue()) + Expect(sl.String()).To(Equal(MweiToWei(5000).String())) }) It("should update the Whitelist initializedWhitelist flag", func() { @@ -193,7 +196,7 @@ var _ = Describe("Migrate Wallet", func() { }) //no wallets chached - When("the worng owner is passed in", func() { + When("the wrong owner is passed in", func() { It("should fail", func() { RandomProxyAddress := deployInitProxy(Owner.Address(), EthToWei(2)) diff --git a/test/wallet-deployer/wallet_deployer_suite_test.go b/test/wallet-deployer/wallet_deployer_suite_test.go index 80bd1322..2736e606 100644 --- a/test/wallet-deployer/wallet_deployer_suite_test.go +++ b/test/wallet-deployer/wallet_deployer_suite_test.go @@ -123,7 +123,7 @@ var _ = BeforeEach(func() { Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) - WalletCacheAddress, tx, WalletCache, err = bindings.DeployWalletCache(BankAccount.TransactOpts(), Backend, WalletImplementationAddress, ENSRegistryAddress, EthToWei(1), [32]byte{}, [32]byte{}, [32]byte{}, [32]byte{}) + WalletCacheAddress, tx, WalletCache, err = bindings.DeployWalletCache(BankAccount.TransactOpts(), Backend, WalletImplementationAddress, ENSRegistryAddress, big.NewInt(10000), [32]byte{}, [32]byte{}, [32]byte{}, [32]byte{}) Expect(err).ToNot(HaveOccurred()) WalletDeployerAddress, tx, WalletDeployer, err = bindings.DeployWalletDeployer(BankAccount.TransactOpts(), Backend, ENSRegistryAddress, [32]byte{}, [32]byte{}) Expect(err).ToNot(HaveOccurred()) diff --git a/test/wallet-deployer/wallet_deployer_test.go b/test/wallet-deployer/wallet_deployer_test.go index 784cafe7..2bcb369f 100644 --- a/test/wallet-deployer/wallet_deployer_test.go +++ b/test/wallet-deployer/wallet_deployer_test.go @@ -81,7 +81,7 @@ var _ = Describe("Wallet Deployer", func() { }) It("should succeed", func() { - tx, err := NewWallet.SetDailyLimit(Owner.TransactOpts(), EthToWei(1)) + tx, err := NewWallet.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -131,22 +131,22 @@ var _ = Describe("Wallet Deployer", func() { NewWallet, err = bindings.NewWallet(NewWalletAddress, Backend) Expect(err).ToNot(HaveOccurred()) - tx, err := NewWallet.SetDailyLimit(Owner.TransactOpts(), FinneyToWei(500)) + tx, err := NewWallet.SubmitDailyLimitUpdate(Owner.TransactOpts(), FinneyToWei(500)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should lower the daily available to 500 Finney", func() { + It("should lower the daily available to 5000 USD", func() { av, err := NewWallet.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(FinneyToWei(500).String())) + Expect(av.String()).To(Equal(MweiToWei(5000).String())) }) - It("should have a daily limit of 500 Finney", func() { + It("should have a daily limit of 5000 Finney", func() { sl, err := NewWallet.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(FinneyToWei(500).String())) + Expect(sl.String()).To(Equal(MweiToWei(5000).String())) }) }) From 23ea4a43bf60ceec9d2b60e5985938400865e56d Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Mon, 9 Nov 2020 18:20:31 +0100 Subject: [PATCH 24/66] Fix wallet tests --- test/wallet/batch_execute_transaction_test.go | 8 +- test/wallet/convert_to_stablecoin_test.go | 22 +- test/wallet/daily_limit_test.go | 354 +++++++++++------- test/wallet/execute_transaction_test.go | 31 +- test/wallet/load_eth_test.go | 25 +- test/wallet/load_non-complaint_ERC20_test.go | 12 +- test/wallet/top_up_gas_test.go | 2 +- test/wallet/transfer_test.go | 231 +++++------- test/wallet/whitelist_test.go | 2 +- 9 files changed, 381 insertions(+), 306 deletions(-) diff --git a/test/wallet/batch_execute_transaction_test.go b/test/wallet/batch_execute_transaction_test.go index 40fb481d..8d064da2 100644 --- a/test/wallet/batch_execute_transaction_test.go +++ b/test/wallet/batch_execute_transaction_test.go @@ -160,7 +160,7 @@ var _ = Describe("batchExecuteTransaction", func() { a, err := abi.JSON(strings.NewReader(WALLET_ABI)) Expect(err).ToNot(HaveOccurred()) - data, err := a.Pack("setDailyLimit", EthToWei(1)) + data, err := a.Pack("submitDailyLimitUpdate", EthToWei(1)) Expect(err).ToNot(HaveOccurred()) batch := fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(big.NewInt(0)), abi.U256(big.NewInt(int64(len(data)))), data) @@ -206,13 +206,13 @@ var _ = Describe("batchExecuteTransaction", func() { Expect(evt.Amount).To(Equal(EthToWei(1))) }) - It("should lower the available amount to 1 ETH", func() { + It("should lower the available amount to 1 USD", func() { av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(av.String()).To(Equal(EthToWei(1).String())) }) - It("should have a limit of 1 ETH", func() { + It("should have a limit of 1 USD", func() { sl, err := WalletProxy.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(EthToWei(1).String())) @@ -339,7 +339,7 @@ const WALLET_ABI = `[ "type": "uint256" } ], - "name": "setDailyLimit", + "name": "submitDailyLimitUpdate", "outputs": [], "payable": false, "stateMutability": "nonpayable", diff --git a/test/wallet/convert_to_stablecoin_test.go b/test/wallet/convert_to_stablecoin_test.go index 77b68866..1267c7ff 100644 --- a/test/wallet/convert_to_stablecoin_test.go +++ b/test/wallet/convert_to_stablecoin_test.go @@ -72,11 +72,11 @@ var _ = Describe("convertToStablecoin", func() { }) When("overflow does not occur", func() { - It("Should return 0.1(amount)*0.1(rate)/0.1(stablecoin rate)*10^6(in Mwei)", func() { + It("Should return 0.1(amount)*0.1(rate)/0.1(stablecoin rate)*10^18(in Eth)", func() { value, err := WalletProxy.ConvertToStablecoin(nil, common.HexToAddress("0xfe209bdE5CA32fa20E6728A005F26D651FFF5982"), big.NewInt(int64(0.1*math.Pow10(8)))) Expect(err).ToNot(HaveOccurred()) - finalAmount := MweiToWei(1) - finalAmount.Div(finalAmount, big.NewInt(10)) //the final amount should be 0.1*0.1*10*1USDC => 1/10 MweiToWei , USDC decimals = 6 + finalAmount := EthToWei(1) + finalAmount.Div(finalAmount, big.NewInt(10)) //the final amount should be 0.1*0.1*10*1DAI => 1/10 EthToWei , DAI decimals = 18 Expect(value.String()).To(Equal(finalAmount.String())) }) }) @@ -98,7 +98,7 @@ var _ = Describe("convertToStablecoin", func() { It("Should return 0.1(amount)*5.09(rate)/0.1(stablecoin rate)*10^6(in Mwei)", func() { value, err := WalletProxy.ConvertToStablecoin(nil, common.HexToAddress("0xfe209bdE5CA32fa20E6728A005F26D651FFF5982"), big.NewInt(int64(0.1*math.Pow10(8)))) Expect(err).ToNot(HaveOccurred()) - finalAmount := MweiToWei(509) + finalAmount := EthToWei(509) finalAmount.Div(finalAmount, big.NewInt(100)) //the final amount should be 0.1*5.09*10*1ETH => 5.09 ETH => 509/100 Expect(value.String()).To(Equal(finalAmount.String())) }) @@ -108,11 +108,11 @@ var _ = Describe("convertToStablecoin", func() { }) }) - When("the token is not available", func() { - It("Should revert", func() { - _, err := WalletProxy.ConvertToStablecoin(nil, common.HexToAddress("0x1"), big.NewInt(100)) - Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(ContainSubstring("token not available")) + Context("When the token is not available", func() { + It("Should return 0", func() { + value, err := WalletProxy.ConvertToStablecoin(nil, common.HexToAddress("0x1"), big.NewInt(100)) + Expect(err).ToNot(HaveOccurred()) + Expect(value.String()).To(Equal("0")) }) }) @@ -158,10 +158,10 @@ var _ = Describe("convertToStablecoin", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("Should return 0.1(amount)/0.001(stablecoin rate)*10^6(in Mwei)", func() { + It("Should return 0.1(amount)/0.001(stablecoin rate)*10^18(in Eth)", func() { value, err := WalletProxy.ConvertToStablecoin(nil, common.HexToAddress("0x0"), big.NewInt(int64(0.1*math.Pow10(18)))) Expect(err).ToNot(HaveOccurred()) - finalAmount := MweiToWei(1) + finalAmount := EthToWei(1) finalAmount.Mul(finalAmount, big.NewInt(100)) //the final amount should be 0.1*1000*1ETH => 1*100 ETH Expect(value.String()).To(Equal(finalAmount.String())) }) diff --git a/test/wallet/daily_limit_test.go b/test/wallet/daily_limit_test.go index d2214cda..69e60b17 100644 --- a/test/wallet/daily_limit_test.go +++ b/test/wallet/daily_limit_test.go @@ -1,9 +1,9 @@ package wallet_test import ( + "math/big" "time" - "github.com/ethereum/go-ethereum/common" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" . "github.com/tokencard/contracts/v3/test/shared" @@ -11,248 +11,334 @@ import ( ) var _ = Describe("Daily limit", func() { + BeforeEach(func() { BankAccount.MustTransfer(Backend, Controller.Address(), EthToWei(1)) }) - When("wallet has been deployed", func() { - It("should have 100 ETH spend available", func() { - av, err := WalletProxy.DailyLimitAvailable(nil) + When("the contract just has been deployed", func() { + + It("should have initial daily limit of 10000$", func() { + ll, err := WalletProxy.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(EthToWei(100).String())) + Expect(ll.String()).To(Equal(EthToWei(10000).String())) + + ll, err = WalletProxy.DailyLimitAvailable(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(ll.String()).To(Equal(EthToWei(10000).String())) }) - When("a random person tries to set the daily limit", func() { - It("should fail", func() { - tx, err := WalletProxy.SetDailyLimit(RandomAccount.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) + It("should emit InitializedDailyLimit event", func() { + it, err := WalletProxy.FilterInitializedDailyLimit(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + Expect(evt.Amount.String()).To(Equal(EthToWei(10000).String())) + initTime := Backend.Blockchain().CurrentHeader().Time + 24*60*60 - 10 + Expect(evt.NextReset.String()).To(Equal(big.NewInt(int64(initTime)).String())) }) + }) - When("controller tries to set the daily limit", func() { - It("should fail", func() { - tx, err := WalletProxy.SetDailyLimit(Controller.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) + When("the controller tries to submit a new daily limit", func() { + It("should fail", func() { + tx, err := WalletProxy.SubmitDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) }) + }) - When("Owner sets the dailyLimit to 1 ETH", func() { + When("the controller tries to confirm with amount=0", func() { + It("should fail", func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(0)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + }) + }) + + When("a random person submits a daily limit of 1 Finney", func() { + It("should fail", func() { + tx, err := WalletProxy.SubmitDailyLimitUpdate(RandomAccount.TransactOpts(ethertest.WithGasLimit(65000)), FinneyToWei(1)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + }) + }) + + Describe("Changing daily limit", func() { + + When("Owner sets the DailyLimit to 1000 $USD", func() { BeforeEach(func() { - tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(), EthToWei(1)) + tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(1000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should emit a spend limit set event", func() { + It("should emit a UpdatedAvailableDailyLimit event", func() { + it, err := WalletProxy.FilterUpdatedAvailableDailyLimit(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + Expect(evt.Amount.String()).To(Equal(EthToWei(1000).String())) + initTime := Backend.Blockchain().CurrentHeader().Time + 24*60*60 - 20 + Expect(evt.NextReset.String()).To(Equal(big.NewInt(int64(initTime)).String())) + }) + + It("should emit a daily limit set event", func() { it, err := WalletProxy.FilterSetDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) evt := it.Event Expect(it.Next()).To(BeFalse()) Expect(evt.Sender).To(Equal(Owner.Address())) - Expect(evt.Amount).To(Equal(EthToWei(1))) + Expect(evt.Amount).To(Equal(EthToWei(1000))) }) - It("should lower the available limit amount to 1 ETH", func() { + It("should lower the available amount to 1000 $USD", func() { av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(EthToWei(1).String())) + Expect(av.String()).To(Equal(EthToWei(1000).String())) }) - It("should have a new limit of 1 ETH", func() { + It("should have a new limit of 1000 $USD", func() { sl, err := WalletProxy.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(EthToWei(1).String())) + Expect(sl.String()).To(Equal(EthToWei(1000).String())) }) - When("the owner tries to initialize the limit again", func() { + It("should have a pending limit of 1000 $USD", func() { + ptl, err := WalletProxy.DailyLimitPending(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(ptl.String()).To(Equal(EthToWei(1000).String())) + }) + + When("the controller tries to confirm with amount=0", func() { It("should fail", func() { - tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(0)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) Expect(isSuccessful(tx)).To(BeFalse()) }) }) - }) - When("I set limit to 1000 ETH", func() { - BeforeEach(func() { - tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(), EthToWei(1000)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("should update the set flag", func() { - initialized, err := WalletProxy.DailyLimitControllerConfirmationRequired(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(initialized).To(BeTrue()) - }) + When("I transfer 1$", func() { + BeforeEach(func() { - It("should keep the available amount limit at 100 ETH", func() { - av, err := WalletProxy.DailyLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(EthToWei(100).String())) - }) + tx, err := Stablecoin.Credit(BankAccount.TransactOpts(), WalletProxyAddress, EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) - When("I wait for 24 hours", func() { - BeforeEach(func() { - Backend.AdjustTime(time.Hour*24 + time.Second) + tx, err = WalletProxy.Transfer(Owner.TransactOpts(), RandomAccount.Address(), StablecoinAddress, EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should increase the available amount limit to 1000 ETH", func() { - av, err := WalletProxy.DailyLimitAvailable(nil) + It("should emit a UpdatedAvailableDailyLimit event", func() { + it, err := WalletProxy.FilterUpdatedAvailableDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(EthToWei(1000).String())) + Expect(it.Next()).To(BeTrue()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + Expect(evt.Amount.String()).To(Equal(EthToWei(999).String())) + initTime := Backend.Blockchain().CurrentHeader().Time + 24*60*60 - 40 + Expect(evt.NextReset.String()).To(Equal(big.NewInt(int64(initTime)).String())) }) - When("the contract has one eth", func() { - BeforeEach(func() { - BankAccount.Transfer(Backend, WalletProxyAddress, EthToWei(1)) - }) + It("should have 9999 available", func() { + sa, err := WalletProxy.DailyLimitAvailable(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(sa.String()).To(Equal(EthToWei(999).String())) + }) - When("I transfer one ETH", func() { - BeforeEach(func() { - tx, err := WalletProxy.Transfer(Owner.TransactOpts(), RandomAccount.Address(), common.HexToAddress("0x"), EthToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - It("should have 999 ETH available", func() { - sa, err := WalletProxy.DailyLimitAvailable(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(sa.String()).To(Equal(EthToWei(999).String())) - }) + When("the controller tries to confirm with amount=1000$", func() { + It("should fail", func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(65000)), EthToWei(1000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("limit should be greater than current one")) }) }) }) }) - When("I submit a limit of 1 ETH before initialization", func() { - It("should fail", func() { - tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("I submit 3 limit updates of 1 ETH after having set it", func() { + When("I submit 2 Dailylimits of 12K and 11K USD respectively", func() { BeforeEach(func() { - tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(2)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(3)) + tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(12000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) - tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(4)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - - tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(1)) + tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(11000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should emit 3 submission events", func() { + It("should emit 2 submission events", func() { it, err := WalletProxy.FilterSubmittedDailyLimitUpdate(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) evt := it.Event Expect(it.Next()).To(BeTrue()) - Expect(evt.Amount).To(Equal(EthToWei(3))) - evt = it.Event - Expect(it.Next()).To(BeTrue()) - Expect(evt.Amount).To(Equal(EthToWei(4))) + Expect(evt.Amount).To(Equal(EthToWei(12000))) evt = it.Event Expect(it.Next()).To(BeFalse()) - Expect(evt.Amount).To(Equal(EthToWei(1))) + Expect(evt.Amount).To(Equal(EthToWei(11000))) }) - It("should not reduce the available amount", func() { - av, err := WalletProxy.DailyLimitAvailable(nil) + It("should have a pending limit of 11K $", func() { + ptl, err := WalletProxy.DailyLimitPending(nil) Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(EthToWei(2).String())) + Expect(ptl.String()).To(Equal(EthToWei(11000).String())) }) - It("should set the pending limit to 1 ETH", func() { - psl, err := WalletProxy.DailyLimitPending(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(psl.String()).To(Equal(EthToWei(1).String())) + When("the Owner tries to re-submit a limit of 13K $USD", func() { + BeforeEach(func() { + tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(13000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("should set pending limit to 13K $USD", func() { + psl, err := WalletProxy.DailyLimitPending(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(psl.String()).To(Equal(EthToWei(13000).String())) + }) + }) + + When("the owner tries to confirm the daily limit", func() { + It("should fail", func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(65000)), EthToWei(11000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + }) + }) + + When("a random person tries to confirm the daily limit", func() { + It("should fail", func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(RandomAccount.TransactOpts(ethertest.WithGasLimit(65000)), EthToWei(11000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isGasExhausted(tx, 65000)).To(BeFalse()) + Expect(isSuccessful(tx)).To(BeFalse()) + }) }) - When("the controller confirms the limit providing the wrong amount", func() { + When("the controller confirms the limit using the wrong amount", func() { It("should fail", func() { - tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(2)) + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(12000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isGasExhausted(tx, 100000)).To(BeFalse()) Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("confirmed or submitted limit mismatch")) }) }) - When("the controller confirms the right limit", func() { + When("the controller confirms the limit with the right amount", func() { BeforeEach(func() { - tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(), EthToWei(1)) + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(), EthToWei(11000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should emit a limit set event", func() { - it, err := WalletProxy.FilterSetDailyLimit(nil) + It("should have 11K USD available", func() { + ll, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - Expect(it.Next()).To(BeTrue()) - Expect(it.Next()).To(BeTrue()) - evt := it.Event - Expect(it.Next()).To(BeFalse()) - Expect(evt.Amount).To(Equal(EthToWei(1))) + Expect(ll.String()).To(Equal(EthToWei(11000).String())) }) - It("should reduce the available limit amount to 1 ETH", func() { - av, err := WalletProxy.DailyLimitAvailable(nil) + It("should emit a UpdatedAvailableDailyLimit event", func() { + it, err := WalletProxy.FilterUpdatedAvailableDailyLimit(nil) Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(EthToWei(1).String())) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + Expect(evt.Amount.String()).To(Equal(EthToWei(11000).String())) + initTime := Backend.Blockchain().CurrentHeader().Time + 24*60*60 + Expect(evt.NextReset.String()).To(Equal(big.NewInt(int64(initTime)).String())) }) - When("I try to set the daily limit", func() { + When("the controller tries to re-confirm", func() { It("should fail", func() { - tx, err := WalletProxy.SetDailyLimit(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1000)) + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(65000)), EthToWei(11000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("limit should be greater than current one")) }) }) - }) + When("I submit a second limit of 12k USD", func() { + BeforeEach(func() { + tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(12000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + When("the controller confirms the submitted limit", func() { + BeforeEach(func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(), EthToWei(12000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("should have 12k USD available for spending", func() { + tl, err := WalletProxy.DailyLimitAvailable(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(tl.String()).To(Equal(EthToWei(12000).String())) + }) + + It("should emit a UpdatedAvailableDailyLimit event", func() { + it, err := WalletProxy.FilterUpdatedAvailableDailyLimit(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(it.Next()).To(BeTrue()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + Expect(evt.Amount.String()).To(Equal(EthToWei(12000).String())) + initTime := Backend.Blockchain().CurrentHeader().Time + 24*60*60 + Expect(evt.NextReset.String()).To(Equal(big.NewInt(int64(initTime)).String())) + }) + + When("I wait for 24 hours", func() { + BeforeEach(func() { + Backend.AdjustTime(time.Hour*24 + time.Second) + Backend.Commit() + }) + + It("should have 12k USD available for spending", func() { + ll, err := WalletProxy.DailyLimitAvailable(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(ll.String()).To(Equal(EthToWei(12000).String())) + }) + + }) + + }) - When("I try to update the dailyLimit again", func() { - It("should succeed", func() { - tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(1)) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) }) + }) + }) + }) }) diff --git a/test/wallet/execute_transaction_test.go b/test/wallet/execute_transaction_test.go index c0a7f642..bb531e75 100644 --- a/test/wallet/execute_transaction_test.go +++ b/test/wallet/execute_transaction_test.go @@ -19,9 +19,20 @@ import ( var _ = Describe("executeTransaction", func() { - Context("when the wallet has enough ETH", func() { + Context("when the wallet has enough ETH, the daily limit is 100$ and the rate is 1", func() { BeforeEach(func() { BankAccount.MustTransfer(Backend, WalletProxyAddress, EthToWei(101)) + + tx, err := TokenWhitelist.UpdateTokenRate(ControllerAdmin.TransactOpts(), StablecoinAddress, EthToWei(1), big.NewInt(20180913153211)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + + // Set the limit to 100$ + tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(100)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) }) var tx *types.Transaction @@ -38,7 +49,7 @@ var _ = Describe("executeTransaction", func() { Expect(err).ToNot(HaveOccurred()) privateKey, _ := crypto.GenerateKey() randomAddress = crypto.PubkeyToAddress(privateKey.PublicKey) - tx, err = WalletProxy.ExecuteTransaction(Owner.TransactOpts(ethertest.WithGasLimit(100000)), randomAddress, FinneyToWei(500), nil) + tx, err = WalletProxy.ExecuteTransaction(Owner.TransactOpts(), randomAddress, FinneyToWei(500), nil) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -51,7 +62,9 @@ var _ = Describe("executeTransaction", func() { }) It("should reduce the available daily spend balance", func() { - spendLimit.Sub(spendLimit, FinneyToWei(500)) + stableValue, err := WalletProxy.ConvertToStablecoin(nil, common.HexToAddress("0x0"), FinneyToWei(500)) + Expect(err).ToNot(HaveOccurred()) + spendLimit.Sub(spendLimit, stableValue) sl, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(sl.String()).To(Equal(spendLimit.String())) @@ -262,7 +275,7 @@ var _ = Describe("executeTransaction", func() { It("should reduce the available daily balance", func() { av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - eth, err := WalletProxy.ConvertToEther(nil, TKNBurnerAddress, big.NewInt(300)) + eth, err := WalletProxy.ConvertToStablecoin(nil, TKNBurnerAddress, big.NewInt(300)) Expect(err).ToNot(HaveOccurred()) av.Sub(av, eth) //subtract converted eth from dailySppendLimit Expect(av.String()).To(Equal(av.String())) @@ -312,7 +325,7 @@ var _ = Describe("executeTransaction", func() { It("should reduce the available daily balance", func() { av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - eth, err := WalletProxy.ConvertToEther(nil, TKNBurnerAddress, big.NewInt(300)) + eth, err := WalletProxy.ConvertToStablecoin(nil, TKNBurnerAddress, big.NewInt(300)) Expect(err).ToNot(HaveOccurred()) av.Sub(av, eth) //subtract converted eth from dailySppendLimit Expect(av.String()).To(Equal(av.String())) @@ -517,7 +530,7 @@ var _ = Describe("executeTransaction", func() { Expect(isSuccessful(tx)).To(BeTrue()) RandomWalletProxy, err = bindings.NewWallet(RandomWalletProxyAddress, Backend) - tx, err = RandomWalletProxy.InitializeWallet(BankAccount.TransactOpts(), RandomAccount.Address(), false, ENSRegistryAddress, TokenWhitelistNode, ControllerNode, LicenceNode, EthToWei(1)) + tx, err = RandomWalletProxy.InitializeWallet(BankAccount.TransactOpts(), RandomAccount.Address(), false, ENSRegistryAddress, TokenWhitelistNode, ControllerNode, LicenceNode, big.NewInt(1000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -551,7 +564,7 @@ var _ = Describe("executeTransaction", func() { av, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) sl, _ := WalletProxy.DailyLimitValue(nil) - eth, err := WalletProxy.ConvertToEther(nil, TKNBurnerAddress, big.NewInt(300)) + eth, err := WalletProxy.ConvertToStablecoin(nil, TKNBurnerAddress, big.NewInt(300)) Expect(err).ToNot(HaveOccurred()) sl.Sub(sl, eth) //subtract converted eth from dailySppendLimit Expect(av.String()).To(Equal(sl.String())) @@ -593,7 +606,7 @@ var _ = Describe("executeTransaction", func() { It("should NOT reduce the available daily balance", func() { av, err := RandomWalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(EthToWei(1).String())) + Expect(av.String()).To(Equal(EthToWei(1000).String())) }) }) @@ -626,7 +639,7 @@ var _ = Describe("executeTransaction", func() { av, err := RandomWalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) sl, _ := RandomWalletProxy.DailyLimitValue(nil) - eth, err := RandomWalletProxy.ConvertToEther(nil, TKNBurnerAddress, big.NewInt(300)) + eth, err := RandomWalletProxy.ConvertToStablecoin(nil, TKNBurnerAddress, big.NewInt(300)) Expect(err).ToNot(HaveOccurred()) sl.Sub(sl, eth) //subtract converted eth from dailySppendLimit Expect(av.String()).To(Equal(sl.String())) diff --git a/test/wallet/load_eth_test.go b/test/wallet/load_eth_test.go index 676e2252..9a2ff02d 100644 --- a/test/wallet/load_eth_test.go +++ b/test/wallet/load_eth_test.go @@ -4,6 +4,7 @@ import ( "context" "math" "math/big" + "time" "github.com/ethereum/go-ethereum/common" . "github.com/onsi/ginkgo" @@ -88,7 +89,17 @@ var _ = Describe("wallet load eth", func() { Expect(b.String()).To(Equal("0")) }) - When("the wallet has 102 ETH", func() { + When("the daily limit is set to 101 USD", func() { + + BeforeEach(func() { + tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(101)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + //increase the timestam by one day so the new (higher) limit takes effect + Backend.AdjustTime(time.Hour*24 + time.Second) + Backend.Commit() + }) BeforeEach(func() { RandomAccount.MustTransfer(Backend, WalletProxyAddress, EthToWei(102)) @@ -203,26 +214,26 @@ var _ = Describe("wallet load eth", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - When("a bigger amount than daily Load limit is loaded", func() { + When("a bigger amount than daily limit is loaded", func() { It("Should revert", func() { - limPlusOneWei := EthToWei(10) - limPlusOneWei.Add(limPlusOneWei, GweiToWei(1)) // 10 ETH * 1000 + 1= 10,001 stablecoins + limPlusOneWei := EthToWei(101) + limPlusOneWei.Add(limPlusOneWei, GweiToWei(1)) // 101 ETH * 1000 + 1= 100,001 stablecoins tx, err := WalletProxy.LoadTokenCard(Owner.TransactOpts(ethertest.WithGasLimit(200000)), common.HexToAddress("0x0"), limPlusOneWei) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("available 1 ETH + + limPlusOneWei, err := WalletProxy.DailyLimitValue(nil) + Expect(err).ToNot(HaveOccurred()) + + limPlusOneWei.Add(limPlusOneWei, big.NewInt(1)) + tx, err := TokenWhitelist.UpdateTokenRate( ControllerAdmin.TransactOpts(), NonCompliantERC20Address, @@ -213,10 +219,10 @@ var _ = Describe("wallet load non-compliant ERC20", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("available Date: Mon, 9 Nov 2020 18:21:54 +0100 Subject: [PATCH 25/66] Switch test initial daily limit from 100 ETH to 10000 USD --- test/wallet/wallet_suite_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/wallet/wallet_suite_test.go b/test/wallet/wallet_suite_test.go index 88e33a94..10ab9888 100644 --- a/test/wallet/wallet_suite_test.go +++ b/test/wallet/wallet_suite_test.go @@ -106,8 +106,9 @@ var _ = BeforeEach(func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) + // Initialize wallet with 10000$ daily limit WalletProxy, err = bindings.NewWallet(WalletProxyAddress, Backend) - tx, err = WalletProxy.InitializeWallet(Owner.TransactOpts(), Owner.Address(), true, ENSRegistryAddress, TokenWhitelistNode, ControllerNode, LicenceNode, EthToWei(100)) + tx, err = WalletProxy.InitializeWallet(Owner.TransactOpts(), Owner.Address(), true, ENSRegistryAddress, TokenWhitelistNode, ControllerNode, LicenceNode, big.NewInt(10000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) From 13230c3d6986cfe75fe68ba570cdb1d92867d684 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 10 Nov 2020 12:51:24 +0100 Subject: [PATCH 26/66] Fix load ERC20 test error --- test/wallet/load_ERC20_test.go | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/test/wallet/load_ERC20_test.go b/test/wallet/load_ERC20_test.go index beb3bac9..a1aa7969 100644 --- a/test/wallet/load_ERC20_test.go +++ b/test/wallet/load_ERC20_test.go @@ -47,7 +47,7 @@ var _ = Describe("wallet load ERC20", func() { Expect(b.String()).To(Equal("1000")) }) - It("should increase the ERC20 type-2 balance of the Wallet by 2", func() { + It("should increase the ERC20 type-2 balance of the Wallet by 500", func() { b, err := ERC20Contract2.BalanceOf(nil, WalletProxyAddress) Expect(err).ToNot(HaveOccurred()) Expect(b.String()).To(Equal("500")) @@ -117,7 +117,7 @@ var _ = Describe("wallet load ERC20", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("Should emit 1 ERC20Contract1 Approval event", func() { + It("Should emit one ERC20Contract1 Approval event", func() { owner := []common.Address{WalletProxyAddress} spender := []common.Address{LicenceAddress} it, err := ERC20Contract1.FilterApproval(nil, owner, spender) @@ -130,7 +130,7 @@ var _ = Describe("wallet load ERC20", func() { Expect(evt.Value.String()).To(Equal("101")) }) - It("Should emit 1 ERC20Contract2 Approval event", func() { + It("Should emit one ERC20Contract2 Approval event", func() { owner := []common.Address{WalletProxyAddress} spender := []common.Address{LicenceAddress} it, err := ERC20Contract2.FilterApproval(nil, owner, spender) @@ -143,7 +143,7 @@ var _ = Describe("wallet load ERC20", func() { Expect(evt.Value.String()).To(Equal("2")) }) - It("Should emit 2 TransferredToTokenHolder events", func() { + It("Should emit two TransferredToTokenHolder events", func() { it, err := Licence.FilterTransferredToTokenHolder(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) @@ -161,7 +161,7 @@ var _ = Describe("wallet load ERC20", func() { Expect(evt.Amount.String()).To(Equal("1")) }) - It("Should emit 2 TransferredToCryptoFloat events", func() { + It("Should emit two TransferredToCryptoFloat events", func() { it, err := Licence.FilterTransferredToCryptoFloat(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) @@ -179,7 +179,7 @@ var _ = Describe("wallet load ERC20", func() { Expect(evt.Amount.String()).To(Equal("1")) }) - It("Should emit 2 ERC20Contract1 Transfer events", func() { + It("Should emit two ERC20Contract1 Transfer events", func() { from := []common.Address{WalletProxyAddress} var to []common.Address it, err := ERC20Contract1.FilterTransfer(nil, from, to) @@ -197,7 +197,7 @@ var _ = Describe("wallet load ERC20", func() { Expect(evt.Amount.String()).To(Equal("100")) }) - It("Should emit 2 ERC20Contract2 Transfer events", func() { + It("Should emit two ERC20Contract2 Transfer events", func() { from := []common.Address{WalletProxyAddress} var to []common.Address it, err := ERC20Contract2.FilterTransfer(nil, from, to) @@ -215,7 +215,7 @@ var _ = Describe("wallet load ERC20", func() { Expect(evt.Amount.String()).To(Equal("1")) }) - It("Should emit 2 LoadedTokenCard events", func() { + It("Should emit two LoadedTokenCard events", func() { it, err := WalletProxy.FilterLoadedTokenCard(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) @@ -287,10 +287,9 @@ var _ = Describe("wallet load ERC20", func() { }) //more than owned (and hence can be approved) - When("a bigger amount than daily Load limit is loaded", func() { + When("a bigger amount than daily load limit is loaded", func() { BeforeEach(func() { - //rate is 1 token => 1 ETH tx, err := TokenWhitelist.UpdateTokenRate( ControllerAdmin.TransactOpts(), ERC20Contract1Address, @@ -300,17 +299,6 @@ var _ = Describe("wallet load ERC20", func() { Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) - - // stablecoin rate is 10-6 - tx, err = TokenWhitelist.UpdateTokenRate( - ControllerAdmin.TransactOpts(), - StablecoinAddress, - big.NewInt(int64(0.001*math.Pow10(18))), - big.NewInt(20180913153211), - ) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) }) It("Should revert", func() { @@ -319,7 +307,7 @@ var _ = Describe("wallet load ERC20", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("available Date: Tue, 10 Nov 2020 12:52:50 +0100 Subject: [PATCH 27/66] Fix wallet deployer tests caused by stablecoin switch from USDC to DAI --- test/wallet-deployer/migrate_wallet_test.go | 2 +- test/wallet-deployer/wallet_deployer_test.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/wallet-deployer/migrate_wallet_test.go b/test/wallet-deployer/migrate_wallet_test.go index f50f1fe6..8c1a05d1 100644 --- a/test/wallet-deployer/migrate_wallet_test.go +++ b/test/wallet-deployer/migrate_wallet_test.go @@ -53,7 +53,7 @@ var _ = Describe("Migrate Wallet", func() { It("should NOT update the daily limit", func() { sl, err := MigratedWallet.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(MweiToWei(10000).String())) + Expect(sl.String()).To(Equal(EthToWei(10000).String())) }) }) diff --git a/test/wallet-deployer/wallet_deployer_test.go b/test/wallet-deployer/wallet_deployer_test.go index 2bcb369f..cd9cf808 100644 --- a/test/wallet-deployer/wallet_deployer_test.go +++ b/test/wallet-deployer/wallet_deployer_test.go @@ -131,7 +131,7 @@ var _ = Describe("Wallet Deployer", func() { NewWallet, err = bindings.NewWallet(NewWalletAddress, Backend) Expect(err).ToNot(HaveOccurred()) - tx, err := NewWallet.SubmitDailyLimitUpdate(Owner.TransactOpts(), FinneyToWei(500)) + tx, err := NewWallet.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(5000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -140,13 +140,13 @@ var _ = Describe("Wallet Deployer", func() { It("should lower the daily available to 5000 USD", func() { av, err := NewWallet.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) - Expect(av.String()).To(Equal(MweiToWei(5000).String())) + Expect(av.String()).To(Equal(EthToWei(5000).String())) }) - It("should have a daily limit of 5000 Finney", func() { + It("should have a daily limit of 5000 USD", func() { sl, err := NewWallet.DailyLimitValue(nil) Expect(err).ToNot(HaveOccurred()) - Expect(sl.String()).To(Equal(MweiToWei(5000).String())) + Expect(sl.String()).To(Equal(EthToWei(5000).String())) }) }) From 75b8261b0ce60b53e33902ae2c1943878f2dd575 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 10 Nov 2020 12:53:34 +0100 Subject: [PATCH 28/66] Fix upgradeable test given by guard refactor --- test/upgradeable/uninitialized_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/upgradeable/uninitialized_test.go b/test/upgradeable/uninitialized_test.go index 1182e938..6e2daf89 100644 --- a/test/upgradeable/uninitialized_test.go +++ b/test/upgradeable/uninitialized_test.go @@ -40,7 +40,7 @@ var _ = Describe("uninitialized", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("only owner or self")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Only owner or self")) }) It("Should fail it when there's onlyController()", func() { From 639e54bb14006832504565e7fc5a200e9e9068f8 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 10 Nov 2020 13:09:17 +0100 Subject: [PATCH 29/66] Remove useless parts from load non-compliant ERC20 test --- test/wallet/load_non-complaint_ERC20_test.go | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/test/wallet/load_non-complaint_ERC20_test.go b/test/wallet/load_non-complaint_ERC20_test.go index 355ae235..5a34b338 100644 --- a/test/wallet/load_non-complaint_ERC20_test.go +++ b/test/wallet/load_non-complaint_ERC20_test.go @@ -184,13 +184,6 @@ var _ = Describe("wallet load non-compliant ERC20", func() { When("a bigger amount than daily limit is loaded", func() { BeforeEach(func() { - //rate is 1 token => 1 ETH - - limPlusOneWei, err := WalletProxy.DailyLimitValue(nil) - Expect(err).ToNot(HaveOccurred()) - - limPlusOneWei.Add(limPlusOneWei, big.NewInt(1)) - tx, err := TokenWhitelist.UpdateTokenRate( ControllerAdmin.TransactOpts(), NonCompliantERC20Address, @@ -200,17 +193,6 @@ var _ = Describe("wallet load non-compliant ERC20", func() { Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) - - // stablecoin rate is 10-6 - tx, err = TokenWhitelist.UpdateTokenRate( - ControllerAdmin.TransactOpts(), - StablecoinAddress, - big.NewInt(int64(0.001*math.Pow10(18))), - big.NewInt(20180913153211), - ) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) }) It("Should revert", func() { From 162ef9c0254e388eba35b1a1a285cef44e22c42a Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 10 Nov 2020 13:10:16 +0100 Subject: [PATCH 30/66] Update bindings, tools and go packages --- go.mod | 9 +- go.sum | 82 + .../mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/wallet.go | 1441 +++++------------ pkg/bindings/walletCache.go | 32 +- pkg/bindings/walletDeployer.go | 28 +- tools/slither/slither.db.json | 2 +- 7 files changed, 504 insertions(+), 1092 deletions(-) diff --git a/go.mod b/go.mod index 9818abce..22e4ee5d 100644 --- a/go.mod +++ b/go.mod @@ -5,11 +5,14 @@ require ( github.com/elastic/gosigar v0.10.5 // indirect github.com/ethereum/go-ethereum v1.9.12 github.com/gorilla/websocket v1.4.1 // indirect - github.com/onsi/ginkgo v1.7.0 - github.com/onsi/gomega v1.4.3 + github.com/nxadm/tail v1.4.5 // indirect + github.com/onsi/ginkgo v1.14.2 + github.com/onsi/gomega v1.10.3 github.com/pkg/errors v0.8.1 + github.com/tokencard/contracts/v2 v2.3.1 github.com/tokencard/ethertest v0.9.1-0.20200731114835-9cf371a9ab63 - golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4 + golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 + golang.org/x/sys v0.0.0-20201107080550-4d91cf3a1aaf // indirect ) go 1.14 diff --git a/go.sum b/go.sum index 0107f443..24f6ed64 100644 --- a/go.sum +++ b/go.sum @@ -21,6 +21,7 @@ github.com/VictoriaMetrics/fastcache v1.5.3 h1:2odJnXLbFZcoV9KYtQ+7TH1UOq3dn3Ass github.com/VictoriaMetrics/fastcache v1.5.3/go.mod h1:+jv9Ckb+za/P1ZRg/sulP5Ni1v49daAVERr0H3CuscE= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/allegro/bigcache v1.1.1-0.20190116153254-84a0ff3f153c/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ= @@ -60,6 +61,9 @@ github.com/elastic/gosigar v0.8.1-0.20180330100440-37f05ff46ffa/go.mod h1:cdorVV github.com/elastic/gosigar v0.10.4/go.mod h1:cdorVVzy1fhmEqmtgqkoE3bYtCfSCkVyjTyCIo22xvs= github.com/elastic/gosigar v0.10.5 h1:GzPQ+78RaAb4J63unidA/JavQRKrB6s8IOzN6Ib59jo= github.com/elastic/gosigar v0.10.5/go.mod h1:cdorVVzy1fhmEqmtgqkoE3bYtCfSCkVyjTyCIo22xvs= +github.com/ethereum/go-ethereum v1.8.17/go.mod h1:PwpWDrCLZrV+tfrhqqF6kPknbISMHaJv9Ln3kPCZLwY= +github.com/ethereum/go-ethereum v1.9.2/go.mod h1:PwpWDrCLZrV+tfrhqqF6kPknbISMHaJv9Ln3kPCZLwY= +github.com/ethereum/go-ethereum v1.9.9/go.mod h1:a9TqabFudpDu1nucId+k9S8R9whYaHnGBLKFouA5EAo= github.com/ethereum/go-ethereum v1.9.12 h1:EPtimwsp/KGDSiXcNunzsI4kefdsMHZGJntKx3fvbaI= github.com/ethereum/go-ethereum v1.9.12/go.mod h1:PvsVkQmhZFx92Y+h2ylythYlheEDt/uBgFbl61Js/jo= github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -68,6 +72,8 @@ github.com/fjl/memsize v0.0.0-20180929194037-2a09253e352a h1:1znxn4+q2MrEdTk1eCk github.com/fjl/memsize v0.0.0-20180929194037-2a09253e352a/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= @@ -78,16 +84,28 @@ github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dT github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2-0.20190517061210-b285ee9cfc6c h1:zqAKixg3cTcIasAMJV+EcfVbWwLpOZ7LeoWJvcuD/5Q= github.com/golang/protobuf v1.3.2-0.20190517061210-b285ee9cfc6c/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -101,12 +119,15 @@ github.com/huin/goupnp v0.0.0-20161224104101-679507af18f3/go.mod h1:MZ2ZmwcBpvOo github.com/huin/goupnp v0.0.0-20180415215157-1395d1447324 h1:PV190X5/DzQ/tbFFG5YpT5mH6q+cHlfgqI5JuRnH9oE= github.com/huin/goupnp v0.0.0-20180415215157-1395d1447324/go.mod h1:MZ2ZmwcBpvOoJ22IJsc7va19ZwoheaBk43rKg12SKag= github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458 h1:6OvNmYgJyexcZ3pYbTI9jWx5tHo1Dee/tWbLMfPe2TA= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/karalabe/hid v0.0.0-20180420081245-2b4488a37358/go.mod h1:YvbcH+3Wo6XPs9nkgTY3u19KXLauXW+J5nB7hEHuX0A= +github.com/karalabe/usb v0.0.0-20190819132248-550797b1cad8/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356 h1:I/yrLt2WilKxlQKCM52clh5rGzTKpVctGT1lH4Dc8Jw= github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -120,10 +141,12 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/logrusorgru/aurora v0.0.0-20180419164547-d694e6f975a9 h1:KQdwUNlTDGyS6e+2rjAxfHSpBFIOHXqgDceNDqb55+4= github.com/logrusorgru/aurora v0.0.0-20180419164547-d694e6f975a9/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.0 h1:v2XXALHHh6zHfYTJ+cSkwtyffnaOyR1MXaA91mTrb8o= github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035 h1:USWjF42jDCSEeikX/G1g40ZWnsPXN5WkZ4jMHZWyBK4= github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -135,15 +158,29 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.5 h1:obHEce3upls1IBn1gTw/o7bCv7OJb6Ib/o7wNO+4eKw= +github.com/nxadm/tail v1.4.5/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20180912035003-be2c049b30cc/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c h1:1RHs3tNxjXGHeul8z2t6H2N2TlAqpKe5yryJztRx4Jk= github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M= +github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pborman/uuid v0.0.0-20180906182336-adf5a7427709 h1:zNBQb37RGLmJybyMcs983HfUfpkw9OTFD9tbBfAViHE= @@ -168,6 +205,7 @@ github.com/prometheus/tsdb v0.10.0/go.mod h1:oi49uRhEe9dPUTlS3JRZOwJuVi6tmh10QSg github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rjeczalik/notify v0.9.2 h1:MiTWrPj55mNDHEiIX5YUSKefw/+lCQVoAFmD6oQm5w8= github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= +github.com/robertkrimen/otto v0.0.0-20170205013659-6a77b7cbc37d/go.mod h1:xvqspoSXJTIpemEonrMDFq6XzwHYYgToXWj5eRX1OtY= github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.5.0 h1:dgSHE6+ia18arGOTIYQKKGWLvEbGvmbNE6NfxhoNHUY= github.com/rs/cors v1.5.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= @@ -190,8 +228,15 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/syndtr/goleveldb v0.0.0-20180815032940-ae2bd5eed72d/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d h1:gZZadD8H+fF+n9CmNhYL1Y0dJB+kLOmKd7FbPJLeGHs= github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d/go.mod h1:9OrXJhf154huy1nPWmuSrkgjPUtUNhA+Zmy+6AESzuA= +github.com/tokencard/contracts v1.5.8 h1:hUlZFRCEQiGMFS9NP6ze1BMXOLOJT4tKc58iRIXSRFQ= +github.com/tokencard/contracts v1.5.8/go.mod h1:DwcbZ4CUlM1hVY5Y7jsXbCIuST/sCeDYLxUUANdb0C4= +github.com/tokencard/contracts/v2 v2.3.1 h1:OSYOBbvaY98MOz17L72ah0gF1II/jsHf/LI5Zy2JPt0= +github.com/tokencard/contracts/v2 v2.3.1/go.mod h1:bRCoTwF0y2MHBr/OuXRKf3s66sMxxzzV8dNx2pZiwSM= +github.com/tokencard/ethertest v0.7.0/go.mod h1:c+qKrL1Tg3Dg0/lEOnmX/WB9Rv/mitm6ueAn9Ge8UKQ= +github.com/tokencard/ethertest v0.8.1/go.mod h1:1GTnshKUCoZACOuj+ak3oc5L6DIfxM+P8Nefml8eA3I= github.com/tokencard/ethertest v0.9.1-0.20200731114835-9cf371a9ab63 h1:5tNtJj5yBOiuCcbnhzpb+0MLlYeTQHerZ6+vSr3+fzg= github.com/tokencard/ethertest v0.9.1-0.20200731114835-9cf371a9ab63/go.mod h1:NGTJ8DcKF7l+b+mU7YykHhv/pckChUW6zrogmx78pSo= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= @@ -201,32 +246,65 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208 h1:1cngl9mPEoITZG8s8cVcUy5CeIBYhEESkOB7m6Gmkrk= github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180927165925-5295e8364332/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4 h1:QmwruyY+bKbDDL0BaglrbZABEali68eoMFhTZpCjYVA= golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180926154720-4dfa2610cdf3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7 h1:AeiKBIuRw3UomYXSbLy0Mc2dDLfdtbT/IVn4keq83P0= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 h1:wBouT66WTYFXdxfVdz9sVWARVd/2vfGcmI45D2gj45M= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180928133829-e4b3c5e90611/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 h1:DYfZAGf2WMFjMxbgTjaC+2HC7NkNAQs+6Q8b9WEB/F4= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201107080550-4d91cf3a1aaf h1:kt3wY1Lu5MJAnKTfoMR52Cu4gwvna4VTzNOiT8tY73s= +golang.org/x/sys v0.0.0-20201107080550-4d91cf3a1aaf/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= @@ -236,6 +314,7 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/olebedev/go-duktape.v3 v3.0.0-20190213234257-ec84240a7772/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= +gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0= @@ -243,4 +322,7 @@ gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHO gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index 3de7e857..1fe86f74 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea26469706673582212206e19f853f4d2b5df7659558782b485c19ef0ab1fa13a3ee6abcf36eb8f920b2664736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220d1d75993e589dae5803aa213c7a76070a945ba14532814a828e195f19c14d4b064736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index 84cd5ef6..ca182d35 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -28,10 +28,10 @@ var ( ) // WalletABI is the input ABI used to generate the binding from. -const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetGasTopUpLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetLoadLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetSpendLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedGasTopUpLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedLoadLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedSpendLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmGasTopUpLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmLoadLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmSpendLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToEther\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTopUpLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTopUpLimitControllerConfirmationRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTopUpLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTopUpLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_spendLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loadLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loadLimitControllerConfirmationRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loadLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loadLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"setGasTopUpLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"setLoadLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"setSpendLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"spendLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"spendLimitControllerConfirmationRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"spendLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"spendLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitGasTopUpLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitLoadLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitSpendLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" +const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d39660455534801561007957600080fd5b50615dc2806200008a6000396000f3fe6080604052600436106103975760003560e01c8063877337b0116101dc578063cccdc55611610102578063e61c51ca116100a0578063f41c43191161006f578063f41c43191461107e578063f4217648146110a8578063f776f51814611123578063f8b2cb4f1461113857610397565b8063e61c51ca14610fc7578063eadd3cea14610ff1578063f36febda1461101b578063f40b51f81461105457610397565b8063d251fefc116100dc578063d251fefc14610f5e578063da84b1ed14610f88578063de212bf314610f9d578063e2b4ce9714610fb257610397565b8063cccdc55614610e71578063cd7958dd14610e86578063ce0b5bd514610f3457610397565b8063b242e5341161017a578063beabacc811610149578063beabacc814610dda578063c4856cd914610e1d578063cbd2ac6814610e32578063cc0e7e5614610e5c57610397565b8063b242e53414610d3c578063b87e21ef14610d77578063bcb8b74a14610db0578063be40ba7914610dc557610397565b80639b0dfd27116101b65780639b0dfd2714610c37578063aaf1fc6214610c4c578063ab20599314610cfd578063b221f31614610d1257610397565b8063877337b014610bf85780638da5cb5b14610c0d57806390e690c714610c2257610397565b80633bfec254116102c15780636137d6701161025f578063747c31d61161022e578063747c31d614610b225780637d73b23114610b375780637d7d004614610b685780637fd004fa14610b7d57610397565b80636137d67014610a0d57806369efdfc014610a88578063715018a614610ae357806374624c5514610af857610397565b806346efe0ed1161029b57806346efe0ed146108e757806347b55a9d146109b95780635adc02ab146109ce5780635d2362a8146109f857610397565b80633bfec254146107cd5780633c672eb7146107f75780633f579f421461082157610397565b806320c13b0b1161033957806326d05ab21161030857806326d05ab2146106f4578063294f40251461070957806332531c3c1461076e5780633a43199f146107a157610397565b806320c13b0b146105d55780632121dc75146106a057806321ce918d146106b55780632587a6a2146106df57610397565b8063100f23fd11610375578063100f23fd146104375780631127b57e146104615780631626ba7e146104eb5780631efd0299146105c057610397565b806301ffc9a71461039c578063027ef3eb146103e45780630f3a85d81461040b575b600080fd5b3480156103a857600080fd5b506103d0600480360360208110156103bf57600080fd5b50356001600160e01b03191661116b565b604080519115158252519081900360200190f35b3480156103f057600080fd5b506103f9611185565b60408051918252519081900360200190f35b34801561041757600080fd5b506104356004803603602081101561042e57600080fd5b503561118b565b005b34801561044357600080fd5b506104356004803603602081101561045a57600080fd5b5035611291565b34801561046d57600080fd5b50610476611436565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104b0578181015183820152602001610498565b50505050905090810190601f1680156104dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104f757600080fd5b506105a36004803603604081101561050e57600080fd5b81359190810190604081016020820135600160201b81111561052f57600080fd5b82018360208201111561054157600080fd5b803590602001918460018302840111600160201b8311171561056257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611457945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105cc57600080fd5b506103f96114c6565b3480156105e157600080fd5b506105a3600480360360408110156105f857600080fd5b810190602081018135600160201b81111561061257600080fd5b82018360208201111561062457600080fd5b803590602001918460018302840111600160201b8311171561064557600080fd5b919390929091602081019035600160201b81111561066257600080fd5b82018360208201111561067457600080fd5b803590602001918460018302840111600160201b8311171561069557600080fd5b5090925090506114d7565b3480156106ac57600080fd5b506103d06115ae565b3480156106c157600080fd5b50610435600480360360208110156106d857600080fd5b50356115be565b3480156106eb57600080fd5b506103f9611656565b34801561070057600080fd5b506103d061165c565b34801561071557600080fd5b5061071e611665565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561075a578181015183820152602001610742565b505050509050019250505060405180910390f35b34801561077a57600080fd5b506103d06004803603602081101561079157600080fd5b50356001600160a01b03166116c7565b610435600480360360408110156107b757600080fd5b506001600160a01b0381351690602001356116dc565b3480156107d957600080fd5b50610435600480360360208110156107f057600080fd5b50356118fc565b34801561080357600080fd5b506104356004803603602081101561081a57600080fd5b50356119ee565b34801561082d57600080fd5b506104766004803603606081101561084457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561087357600080fd5b82018360208201111561088557600080fd5b803590602001918460018302840111600160201b831117156108a657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a8e945050505050565b3480156108f357600080fd5b506104356004803603606081101561090a57600080fd5b81359190810190604081016020820135600160201b81111561092b57600080fd5b82018360208201111561093d57600080fd5b803590602001918460018302840111600160201b8311171561095e57600080fd5b919390929091602081019035600160201b81111561097b57600080fd5b82018360208201111561098d57600080fd5b803590602001918460018302840111600160201b831117156109ae57600080fd5b509092509050611f61565b3480156109c557600080fd5b5061071e612299565b3480156109da57600080fd5b50610435600480360360208110156109f157600080fd5b50356122f9565b348015610a0457600080fd5b506103f96125c0565b348015610a1957600080fd5b5061043560048036036020811015610a3057600080fd5b810190602081018135600160201b811115610a4a57600080fd5b820183602082011115610a5c57600080fd5b803590602001918460208302840111600160201b83111715610a7d57600080fd5b5090925090506125cc565b348015610a9457600080fd5b50610435600480360360e0811015610aab57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356127f2565b348015610aef57600080fd5b506104356128d6565b348015610b0457600080fd5b5061043560048036036020811015610b1b57600080fd5b50356129d4565b348015610b2e57600080fd5b506103f9612ad2565b348015610b4357600080fd5b50610b4c612ad8565b604080516001600160a01b039092168252519081900360200190f35b348015610b7457600080fd5b506103f9612ae7565b348015610b8957600080fd5b5061043560048036036020811015610ba057600080fd5b810190602081018135600160201b811115610bba57600080fd5b820183602082011115610bcc57600080fd5b803590602001918460208302840111600160201b83111715610bed57600080fd5b509092509050612af3565b348015610c0457600080fd5b506103f9612e35565b348015610c1957600080fd5b50610b4c612e3b565b348015610c2e57600080fd5b50610435612e4a565b348015610c4357600080fd5b506103f9612ea7565b348015610c5857600080fd5b5061043560048036036020811015610c6f57600080fd5b810190602081018135600160201b811115610c8957600080fd5b820183602082011115610c9b57600080fd5b803590602001918460018302840111600160201b83111715610cbc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612ead945050505050565b348015610d0957600080fd5b506103d0612fce565b348015610d1e57600080fd5b5061043560048036036020811015610d3557600080fd5b5035612fd7565b348015610d4857600080fd5b5061043560048036036040811015610d5f57600080fd5b506001600160a01b03813516906020013515156130c1565b348015610d8357600080fd5b506103f960048036036040811015610d9a57600080fd5b506001600160a01b03813516906020013561327b565b348015610dbc57600080fd5b506103d06132ff565b348015610dd157600080fd5b506103d0613308565b348015610de657600080fd5b5061043560048036036060811015610dfd57600080fd5b506001600160a01b03813581169160208101359091169060400135613317565b348015610e2957600080fd5b506103f961349b565b348015610e3e57600080fd5b5061043560048036036020811015610e5557600080fd5b50356134a1565b348015610e6857600080fd5b506103f9613828565b348015610e7d57600080fd5b506103f961382e565b348015610e9257600080fd5b506103f960048036036020811015610ea957600080fd5b810190602081018135600160201b811115610ec357600080fd5b820183602082011115610ed557600080fd5b803590602001918460208302840111600160201b83111715610ef657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613834945050505050565b348015610f4057600080fd5b5061043560048036036020811015610f5757600080fd5b503561388e565b348015610f6a57600080fd5b50610b4c60048036036020811015610f8157600080fd5b5035613a37565b348015610f9457600080fd5b506103f9613a5e565b348015610fa957600080fd5b506103d0613a64565b348015610fbe57600080fd5b506103f9613a72565b348015610fd357600080fd5b5061043560048036036020811015610fea57600080fd5b5035613a78565b348015610ffd57600080fd5b506104356004803603602081101561101457600080fd5b5035613c09565b34801561102757600080fd5b506103f96004803603604081101561103e57600080fd5b506001600160a01b038135169060200135613c5c565b34801561106057600080fd5b506104356004803603602081101561107757600080fd5b5035613e03565b34801561108a57600080fd5b50610435600480360360208110156110a157600080fd5b5035613e56565b3480156110b457600080fd5b50610435600480360360208110156110cb57600080fd5b810190602081018135600160201b8111156110e557600080fd5b8201836020820111156110f757600080fd5b803590602001918460208302840111600160201b8311171561111857600080fd5b509092509050613ea9565b34801561112f57600080fd5b506103d06141fb565b34801561114457600080fd5b506103f96004803603602081101561115b57600080fd5b50356001600160a01b0316614204565b6001600160e01b031981166301ffc9a760e01b145b919050565b603e5490565b6111943361420f565b8061119e57503330145b6111e2576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561120157506706f05b59d3b200008111155b611248576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b611253604082614223565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b61129a3361420f565b806112a957506112a93361428c565b6112f3576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a5460ff16611342576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113a5603880548060200260200160405190810160405280929190818152602001828054801561139b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161137d575b5050505050613834565b81146113e25760405162461bcd60e51b8152600401808060200182810382526023815260200180615d346023913960400191505060405180910390fd5b6113ee60386000615b22565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806114648484614317565b905061146f8161420f565b6114b4576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b60006114d26047614502565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061154e945086935089915088908190840183828082843760009201919091525061145792505050565b6001600160e01b0319161461159a576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff1690565b6115c73361420f565b806115d157503330145b611615576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611620603b82614531565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60405490565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156116bd57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161169f575b5050505050905090565b60366020526000908152604090205460ff1681565b6116e53361420f565b806116ef57503330145b611733576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b61173c82614592565b611782576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061178e8383613c5c565b905061179b6047826145ac565b60006117a8604d5461461c565b90506001600160a01b03841615611841576117cd6001600160a01b038516828561473d565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561182457600080fd5b505af1158015611838573d6000803e3d6000fd5b505050506118b2565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561189857600080fd5b505af11580156118ac573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b6119053361420f565b8061190f57503330145b611953576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6046548111156119a5576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6119b0604782614223565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b6119f73361420f565b80611a0157503330145b611a45576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611a50603b82614223565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611a993361420f565b80611aa357503330145b611ae7576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16611b1257611b12603b846145ac565b611b24846001600160a01b0316614855565b8015611b345750611b348461485b565b15611d0657600080611b468685614875565b6001600160a01b038216600090815260366020526040902054919350915060ff16611b86576000611b77878361327b565b9050611b84603b826145ac565b505b611b996001600160a01b03871685614976565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f81518110611bcc57fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611c5e578181015183820152602001611c46565b50505050905090810190601f168015611c8b5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611cbe578181015183820152602001611ca6565b50505050905090810190601f168015611ceb5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611f5a915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611d455780518252601f199092019160209182019101611d26565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611da7576040519150601f19603f3d011682016040523d82523d6000602084013e611dac565b606091505b5091509150818190611e3c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e01578181015183820152602001611de9565b50505050905090810190601f168015611e2e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611eb8578181015183820152602001611ea0565b50505050905090810190601f168015611ee55780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611f18578181015183820152602001611f00565b50505050905090810190601f168015611f455780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b611f6a3361428c565b611fa9576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c56833981519152604482015290519081900360640190fd5b60004690506000612020823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614a27565b9050631626ba7e60e01b6001600160e01b0319166120748286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061145792505050565b6001600160e01b031916146120c0576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b604c548714612102576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b61210a614a78565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d806000811461216a576040519150601f19603f3d011682016040523d82523d6000602084013e61216f565b606091505b50915091508181906121c25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611e01578181015183820152602001611de9565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612251578181015183820152602001612239565b50505050905090810190601f16801561227e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156116bd576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161169f575050505050905090565b6123023361428c565b612341576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c56833981519152604482015290519081900360640190fd5b603a5460ff16612390576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6123f1603880548060200260200160405190810160405280929190818152602001828054801561139b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161137d575050505050613834565b811461242e5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d346023913960400191505060405180910390fd5b60005b60385481101561251557603660006038838154811061244c57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1661250d576001603660006038848154811061248b57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556038805460379190839081106124d157fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612431565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561259857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161257a575b5050935050505060405180910390a16125b360386000615b22565b50603a805460ff19169055565b60006114d2603b614502565b6125d53361420f565b806125df57503330145b612623576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff1615801561263e5750603a54610100900460ff16155b61268f576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff166126e8576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061272c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61273860398383615b40565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926127a79285918591829185019084908082843760009201919091525061383492505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff168061280b575061280b614ac0565b80612819575060005460ff16155b6128545760405162461bcd60e51b815260040180806020018281038252602e815260200180615cb9602e913960400191505060405180910390fd5b600054610100900460ff1615801561287f576000805460ff1961ff0019909116610100171660011790555b61288886614ac6565b61289184614b94565b61289b8888614c41565b6128a482614da0565b6128ac614e8b565b6128b585614f7c565b604d83905580156128cc576000805461ff00191690555b5050505050505050565b6128df3361420f565b612929576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612987576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6129dd3361420f565b806129e757503330145b612a2b576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612a4a57506706f05b59d3b200008111155b612a91576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612a9c604082614531565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b604d5490565b6033546001600160a01b031690565b60006114d26040614502565b612afc3361420f565b80612b0657503330145b612b4a576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff16158015612b655750603a54610100900460ff16155b612bb6576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612cd257612c0f828281518110612c0257fe5b602002602001015161420f565b15612c5a576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612c7157fe5b60200260200101516001600160a01b03161415612cca576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612bea565b50603a5462010000900460ff16612d2c576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612d70576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612d7c60388484615b40565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612de99285918591829185019084908082843760009201919091525061383492505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60455490565b6035546001600160a01b031690565b612e533361420f565b612e9d576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612ea5614a78565b565b603b5490565b612eb63361420f565b80612ec057503330145b612f04576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156128cc57612f278660546150ce565b888601805160148201516034909201805193995060609190911c96509094509092509050612f606054612f5a8785615110565b90615110565b945086851115612fa7576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612fbd57506040805160208101909152600081525b612fc8848483611a8e565b50612f14565b604b5460ff1690565b612fe03361420f565b80612fea57503330145b61302e576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b604654811115613080576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b61308b604782614531565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b6130ca3361420f565b613114576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16613172576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166131b75760405162461bcd60e51b8152600401808060200182810382526023815260200180615ce76023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061321057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008061328a8661516a565b5050509350935093505080156132f357816132d5576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6132e9836132e387856152f3565b9061534c565b93505050506114c0565b50600095945050505050565b603f5460ff1690565b603a5462010000900460ff1681565b6133203361420f565b8061332a57503330145b61336e576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b80806133ab576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b0384166133f6576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff1661344057816001600160a01b0384161561343357613430848461327b565b90505b61343e603b826145ac565b505b61344b84848461538e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b604a5490565b6134aa3361428c565b6134e9576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c56833981519152604482015290519081900360640190fd5b603a54610100900460ff1661353d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61359e603980548060200260200160405190810160405280929190818152602001828054801561139b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161137d575050505050613834565b81146135db5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d346023913960400191505060405180910390fd5b60005b60395481101561377c5760366000603983815481106135f957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615613774576000603660006039848154811061363957fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b60375461367d9060016150ce565b811015613745576039828154811061369157fe5b600091825260209091200154603780546001600160a01b0390921691839081106136b757fe5b6000918252602090912001546001600160a01b0316141561373d576037805460001981019081106136e457fe5b600091825260209091200154603780546001600160a01b03909216918390811061370a57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613745565b60010161366f565b50603780548061375157fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b6001016135de565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156137ff57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116137e1575b5050935050505060405180910390a161381a60396000615b22565b50603a805461ff0019169055565b60435490565b604c5481565b60008160405160200180828051906020019060200280838360005b8381101561386757818101518382015260200161384f565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6138973361420f565b806138a657506138a63361428c565b6138f0576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a54610100900460ff16613944576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6139a5603980548060200260200160405190810160405280929190818152602001828054801561139b576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161137d575050505050613834565b81146139e25760405162461bcd60e51b8152600401808060200182810382526023815260200180615d346023913960400191505060405180910390fd5b6139ee60396000615b22565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60378181548110613a4457fe5b6000918252602090912001546001600160a01b0316905081565b60475490565b603a54610100900460ff1681565b60345490565b8080613ab5576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613abe3361420f565b80613acd5750613acd3361428c565b613b17576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b814711613b64576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b613b6f6040836145ac565b613b77612e3b565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613baf573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613bda612e3b565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613c123361428c565b613c51576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c56833981519152604482015290519081900360640190fd5b611a50603b826153c8565b6000613c66615418565b6001600160a01b0316836001600160a01b03161415613c865750806114c0565b816001600160a01b03841615613d45576000806000613ca48761516a565b5050509350935093505080613cf6576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613d31576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613d3f836132e388856152f3565b93505050505b6000806000613d5261548e565b5050509350935093505080613da4576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613dea576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613df8826132e386866152f3565b979650505050505050565b613e0c3361428c565b613e4b576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c56833981519152604482015290519081900360640190fd5b6119b06047826153c8565b613e5f3361428c565b613e9e576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c56833981519152604482015290519081900360640190fd5b6112536040826153c8565b613eb23361420f565b80613ebc57503330145b613f00576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b815181101561400f57613f4c828281518110612c0257fe5b15613f97576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613fae57fe5b60200260200101516001600160a01b03161415614007576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613f34565b50603a5462010000900460ff1615614066576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015614157576036600085858481811061408157fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661414f576001603660008686858181106140bd57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550603784848381811061411257fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101614069565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a94929390929091906060830190849080156141e757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116141c9575b5050935050505060405180910390a1505050565b60445460ff1690565b60006114c0826155fd565b6035546001600160a01b0390811691161490565b600482015460ff1615614271576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b61427b828261568e565b50600401805460ff19166001179055565b600061429960345461461c565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156142e557600080fd5b505afa1580156142f9573d6000803e3d6000fd5b505050506040513d602081101561430f57600080fd5b505192915050565b6000815160411461436f576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156143e05760405162461bcd60e51b8152600401808060200182810382526022815260200180615c346022913960400191505060405180910390fd5b8060ff16601b141580156143f857508060ff16601c14155b156144345760405162461bcd60e51b8152600401808060200182810382526022815260200180615c766022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015614490573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166144f8576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b60028101546000906145179062015180615110565b42111561452657508054611180565b506001810154611180565b600482015460ff1661458a576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061459e8361516a565b509098975050505050505050565b6145b5826156b1565b8082600101541015614601576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461461090826150ce565b82600101819055505050565b6033546000906001600160a01b031661467c576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156146c857600080fd5b505afa1580156146dc573d6000803e3d6000fd5b505050506040513d60208110156146f257600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156142e557600080fd5b8015806147c3575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561479557600080fd5b505afa1580156147a9573d6000803e3d6000fd5b505050506040513d60208110156147bf57600080fd5b5051155b6147fe5760405162461bcd60e51b8152600401808060200182810382526036815260200180615d576036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614850908490614976565b505050565b3b151590565b6000806148678361516a565b509198975050505050505050565b60008061488360455461461c565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156148ee5781810151838201526020016148d6565b50505050905090810190601f16801561491b5780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561493857600080fd5b505afa15801561494c573d6000803e3d6000fd5b505050506040513d604081101561496257600080fd5b508051602090910151909590945092505050565b60606149cb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166157039092919063ffffffff16565b805190915015614850578080602001905160208110156149ea57600080fd5b50516148505760405162461bcd60e51b815260040180806020018281038252602a815260200180615d0a602a913960400191505060405180910390fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604c80546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b303b1590565b600054610100900460ff1680614adf5750614adf614ac0565b80614aed575060005460ff16155b614b285760405162461bcd60e51b815260040180806020018281038252602e815260200180615cb9602e913960400191505060405180910390fd5b600054610100900460ff16158015614b53576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615614b7e57603380546001600160a01b0319166001600160a01b0384161790555b8015614b90576000805461ff00191690555b5050565b600054610100900460ff1680614bad5750614bad614ac0565b80614bbb575060005460ff16155b614bf65760405162461bcd60e51b815260040180806020018281038252602e815260200180615cb9602e913960400191505060405180910390fd5b600054610100900460ff16158015614c21576000805460ff1961ff0019909116610100171660011790555b8115614b7e5760348290558015614b90576000805461ff00191690555050565b600054610100900460ff1680614c5a5750614c5a614ac0565b80614c68575060005460ff16155b614ca35760405162461bcd60e51b815260040180806020018281038252602e815260200180615cb9602e913960400191505060405180910390fd5b600054610100900460ff16158015614cce576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614d4657604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015614850576000805461ff0019169055505050565b600054610100900460ff1680614db95750614db9614ac0565b80614dc7575060005460ff16155b614e025760405162461bcd60e51b815260040180806020018281038252602e815260200180615cb9602e913960400191505060405180910390fd5b600054610100900460ff16158015614e2d576000805460ff1961ff0019909116610100171660011790555b6040805160a08101825283815260208101849052429181018290526000606082018190526080909101819052603b849055603c849055603d91909155603e55603f805460ff191690558015614b90576000805461ff00191690555050565b600054610100900460ff1680614ea45750614ea4614ac0565b80614eb2575060005460ff16155b614eed5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cb9602e913960400191505060405180910390fd5b600054610100900460ff16158015614f18576000805460ff1961ff0019909116610100171660011790555b6040805160a0810182526706f05b59d3b2000080825260208201819052428284018190526000606084018190526080909301839052928190556041556042919091556043556044805460ff191690558015614f79576000805461ff00191690555b50565b600054610100900460ff1680614f955750614f95614ac0565b80614fa3575060005460ff16155b614fde5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cb9602e913960400191505060405180910390fd5b600054610100900460ff16158015615009576000805460ff1961ff0019909116610100171660011790555b61501282615712565b600061501c61548e565b505050505091505060008111615069576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260468190556040805160a081018252828152602081018390524291810182905260006060820181905260809091018190526047839055604892909255604955604a55604b805460ff191690558015614b90576000805461ff00191690555050565b6000611f5a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506157bf565b600082820183811015611f5a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b606060008060008060008061518060455461461c565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b1580156151cc57600080fd5b505afa1580156151e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561520957600080fd5b8101908080516040519392919084600160201b82111561522857600080fd5b90830190602082018581111561523d57600080fd5b8251600160201b81118282018810171561525657600080fd5b82525081516020918201929091019080838360005b8381101561528357818101518382015260200161526b565b50505050905090810190601f1680156152b05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082615302575060006114c0565b8282028284828161530f57fe5b0414611f5a5760405162461bcd60e51b8152600401808060200182810382526021815260200180615c986021913960400191505060405180910390fd5b6000611f5a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615819565b6001600160a01b0382166153b4576153af6001600160a01b0384168261587e565b614850565b6148506001600160a01b0383168483615963565b8082600301541461540a5760405162461bcd60e51b8152600401808060200182810382526022815260200180615bd86022913960400191505060405180910390fd5b614b9082836003015461568e565b600061542560455461461c565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561545d57600080fd5b505afa158015615471573d6000803e3d6000fd5b505050506040513d602081101561548757600080fd5b5051905090565b60606000806000806000806154a460455461461c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156154dc57600080fd5b505afa1580156154f0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561551957600080fd5b8101908080516040519392919084600160201b82111561553857600080fd5b90830190602082018581111561554d57600080fd5b8251600160201b81118282018810171561556657600080fd5b82525081516020918201929091019080838360005b8381101561559357818101518382015260200161557b565b50505050905090810190601f1680156155c05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561568757604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561565457600080fd5b505afa158015615668573d6000803e3d6000fd5b505050506040513d602081101561567e57600080fd5b50519050611180565b5047611180565b615697826156b1565b8082556001820154811015614b9057815460018301555050565b60028101546156c39062015180615110565b421115614f7957426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a150565b60606115a684846000856159b5565b600054610100900460ff168061572b575061572b614ac0565b80615739575060005460ff16155b6157745760405162461bcd60e51b815260040180806020018281038252602e815260200180615cb9602e913960400191505060405180910390fd5b600054610100900460ff1615801561579f576000805460ff1961ff0019909116610100171660011790555b8115614b7e5760458290558015614b90576000805461ff00191690555050565b600081848411156158115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611e01578181015183820152602001611de9565b505050900390565b600081836158685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611e01578181015183820152602001611de9565b50600083858161587457fe5b0495945050505050565b804710156158d3576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d806000811461591e576040519150601f19603f3d011682016040523d82523d6000602084013e615923565b606091505b50509050806148505760405162461bcd60e51b815260040180806020018281038252603a815260200180615bfa603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052614850908490614976565b60606159c085614855565b615a11576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310615a505780518252601f199092019160209182019101615a31565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615ab2576040519150601f19603f3d011682016040523d82523d6000602084013e615ab7565b606091505b50915091508115615acb5791506115a69050565b805115615adb5780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611e01578181015183820152602001611de9565b5080546000825590600052602060002090810190614f799190615ba3565b828054828255906000526020600020908101928215615b93579160200282015b82811115615b935781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615b60565b50615b9f929150615bb8565b5090565b5b80821115615b9f5760008155600101615ba4565b5b80821115615b9f5780546001600160a01b0319168155600101615bb956fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d61746368416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c756573656e646572206973206e6f74206120636f6e74726f6c6c657200000000000045434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65646f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220cd34186453acac978f0828bff119ff5fd479d00c4f76950fa843e140410693ef64736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603b5534801561007957600080fd5b50615304806100896000396000f3fe60806040526004361061025c5760003560e01c8063715018a611610144578063cbd2ac68116100b6578063de212bf31161007a578063de212bf314610cd9578063e2b4ce9714610cee578063e61c51ca14610d03578063f36febda14610d2d578063f421764814610d66578063f8b2cb4f14610de15761025c565b8063cbd2ac6814610b98578063cccdc55614610bc2578063cd7958dd14610bd7578063ce0b5bd514610c85578063d251fefc14610caf5761025c565b80638da5cb5b116101085780638da5cb5b14610a2a57806390e690c714610a3f578063aaf1fc6214610a54578063b242e53414610b05578063be40ba7914610b40578063beabacc814610b555761025c565b8063715018a61461093f578063747c31d6146109545780637d73b231146109695780637fd004fa1461099a578063877337b014610a155761025c565b80633b8252fa116101dd57806347b55a9d116101a157806347b55a9d146107eb5780634d9aa248146108005780635adc02ab146108155780636137d6701461083f57806369efdfc0146108ba5780636c37a7e6146109155761025c565b80633b8252fa146105ed5780633f579f4214610614578063458d07f2146106da57806345b12efc1461070457806346efe0ed146107195761025c565b80632121dc75116102245780632121dc75146104ff57806326d05ab214610514578063294f40251461052957806332531c3c1461058e5780633a43199f146105c15761025c565b806301ffc9a714610261578063100f23fd146102a95780631127b57e146102d55780631626ba7e1461035f57806320c13b0b14610434575b600080fd5b34801561026d57600080fd5b506102956004803603602081101561028457600080fd5b50356001600160e01b031916610e14565b604080519115158252519081900360200190f35b3480156102b557600080fd5b506102d3600480360360208110156102cc57600080fd5b5035610e2e565b005b3480156102e157600080fd5b506102ea610fd5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032457818101518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036b57600080fd5b506104176004803603604081101561038257600080fd5b81359190810190604081016020820135600160201b8111156103a357600080fd5b8201836020820111156103b557600080fd5b803590602001918460018302840111600160201b831117156103d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ff6945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561044057600080fd5b506104176004803603604081101561045757600080fd5b810190602081018135600160201b81111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111600160201b831117156104a457600080fd5b919390929091602081019035600160201b8111156104c157600080fd5b8201836020820111156104d357600080fd5b803590602001918460018302840111600160201b831117156104f457600080fd5b509092509050611065565b34801561050b57600080fd5b5061029561113c565b34801561052057600080fd5b5061029561114d565b34801561053557600080fd5b5061053e611156565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057a578181015183820152602001610562565b505050509050019250505060405180910390f35b34801561059a57600080fd5b50610295600480360360208110156105b157600080fd5b50356001600160a01b03166111b8565b6102d3600480360360408110156105d757600080fd5b506001600160a01b0381351690602001356111cd565b3480156105f957600080fd5b506106026113ed565b60408051918252519081900360200190f35b34801561062057600080fd5b506102ea6004803603606081101561063757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460018302840111600160201b8311171561069957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113f3945050505050565b3480156106e657600080fd5b506102d3600480360360208110156106fd57600080fd5b50356118d5565b34801561071057600080fd5b506106026119bd565b34801561072557600080fd5b506102d36004803603606081101561073c57600080fd5b81359190810190604081016020820135600160201b81111561075d57600080fd5b82018360208201111561076f57600080fd5b803590602001918460018302840111600160201b8311171561079057600080fd5b919390929091602081019035600160201b8111156107ad57600080fd5b8201836020820111156107bf57600080fd5b803590602001918460018302840111600160201b831117156107e057600080fd5b5090925090506119db565b3480156107f757600080fd5b5061053e611d22565b34801561080c57600080fd5b50610602611d82565b34801561082157600080fd5b506102d36004803603602081101561083857600080fd5b5035611d88565b34801561084b57600080fd5b506102d36004803603602081101561086257600080fd5b810190602081018135600160201b81111561087c57600080fd5b82018360208201111561088e57600080fd5b803590602001918460208302840111600160201b831117156108af57600080fd5b50909250905061205e565b3480156108c657600080fd5b506102d3600480360360e08110156108dd57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c00135612286565b34801561092157600080fd5b506102d36004803603602081101561093857600080fd5b503561235a565b34801561094b57600080fd5b506102d3612480565b34801561096057600080fd5b5061060261257e565b34801561097557600080fd5b5061097e612584565b604080516001600160a01b039092168252519081900360200190f35b3480156109a657600080fd5b506102d3600480360360208110156109bd57600080fd5b810190602081018135600160201b8111156109d757600080fd5b8201836020820111156109e957600080fd5b803590602001918460208302840111600160201b83111715610a0a57600080fd5b509092509050612593565b348015610a2157600080fd5b506106026128d7565b348015610a3657600080fd5b5061097e6128dd565b348015610a4b57600080fd5b506102d36128ec565b348015610a6057600080fd5b506102d360048036036020811015610a7757600080fd5b810190602081018135600160201b811115610a9157600080fd5b820183602082011115610aa357600080fd5b803590602001918460018302840111600160201b83111715610ac457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612949945050505050565b348015610b1157600080fd5b506102d360048036036040811015610b2857600080fd5b506001600160a01b0381351690602001351515612a6c565b348015610b4c57600080fd5b50610295612c26565b348015610b6157600080fd5b506102d360048036036060811015610b7857600080fd5b506001600160a01b03813581169160208101359091169060400135612c35565b348015610ba457600080fd5b506102d360048036036020811015610bbb57600080fd5b5035612daa565b348015610bce57600080fd5b50610602613140565b348015610be357600080fd5b5061060260048036036020811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460208302840111600160201b83111715610c4757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613146945050505050565b348015610c9157600080fd5b506102d360048036036020811015610ca857600080fd5b50356131a0565b348015610cbb57600080fd5b5061097e60048036036020811015610cd257600080fd5b503561334b565b348015610ce557600080fd5b50610295613372565b348015610cfa57600080fd5b50610602613380565b348015610d0f57600080fd5b506102d360048036036020811015610d2657600080fd5b5035613386565b348015610d3957600080fd5b5061060260048036036040811015610d5057600080fd5b506001600160a01b038135169060200135613517565b348015610d7257600080fd5b506102d360048036036020811015610d8957600080fd5b810190602081018135600160201b811115610da357600080fd5b820183602082011115610db557600080fd5b803590602001918460208302840111600160201b83111715610dd657600080fd5b50909250905061368e565b348015610ded57600080fd5b5061060260048036036020811015610e0457600080fd5b50356001600160a01b03166139e2565b6001600160e01b031981166301ffc9a760e01b145b919050565b610e37336139ed565b80610e465750610e4633613a01565b610e92576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a5460ff16610ee1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610f446038805480602002602001604051908101604052809291908181526020018280548015610f3a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f1c575b5050505050613146565b8114610f815760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b610f8d60386000615039565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806110038484613a8c565b905061100e816139ed565b611053576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b95506110dc9450869350899150889081908401838280828437600092019190915250610ff692505050565b6001600160e01b03191614611128576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b60366020526000908152604090205460ff1681565b6111d6336139ed565b806111e057503330145b611226576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b61122f82613c77565b611275576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006112818383613517565b905061128c81613c91565b6000611299604154613d31565b90506001600160a01b03841615611332576112be6001600160a01b0385168285613e52565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b505050506113a3565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561138957600080fd5b505af115801561139d573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603e5490565b60606113fe336139ed565b8061140857503330145b61144e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff1661148857600061147b600085613517565b905061148681613c91565b505b61149a846001600160a01b0316613f6a565b80156114aa57506114aa84613f70565b1561167a576000806114bc8685613f8a565b6001600160a01b038216600090815260366020526040902054919350915060ff166114fa5760006114ed8783613517565b90506114f881613c91565b505b61150d6001600160a01b0387168561408b565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061154057fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156115d25781810151838201526020016115ba565b50505050905090810190601f1680156115ff5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561163257818101518382015260200161161a565b50505050905090810190601f16801561165f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506118ce915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106116b95780518252601f19909201916020918201910161169a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461171b576040519150601f19603f3d011682016040523d82523d6000602084013e611720565b606091505b50915091508181906117b05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561177557818101518382015260200161175d565b50505050905090810190601f1680156117a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561182c578181015183820152602001611814565b50505050905090810190601f1680156118595780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561188c578181015183820152602001611874565b50505050905090810190601f1680156118b95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6118de336139ed565b806118e857503330145b61192e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603e819055603c54811161198657603d5481101561197857603d819055603f5460408051838152602081019290925280516000805160206151738339815191529281900390910190a15b6119818161413c565b6119ba565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000603f544211156119d25750603c5461114a565b50603d5461114a565b6119e433613a01565b611a32576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b60004690506000611aa9823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061417f565b9050631626ba7e60e01b6001600160e01b031916611afd8286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ff692505050565b6001600160e01b03191614611b49576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6040548714611b8b576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611b936141d0565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611bf3576040519150601f19603f3d011682016040523d82523d6000602084013e611bf8565b606091505b5091509150818190611c4b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611cda578181015183820152602001611cc2565b50505050905090810190601f168015611d075780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b603c5490565b611d9133613a01565b611ddf576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a5460ff16611e2e576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611e8f6038805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114611ecc5760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603854811015611fb3576036600060388381548110611eea57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611fab5760016036600060388481548110611f2957fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603880546037919083908110611f6f57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611ecf565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561203657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612018575b5050935050505060405180910390a161205160386000615039565b50603a805460ff19169055565b612067336139ed565b8061207157503330145b6120b7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156120d25750603a54610100900460ff16155b612123576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff1661217c576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806121c0576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6121cc60398383615057565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d1928592859261223b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff168061229f575061229f614216565b806122ad575060005460ff16155b6122e85760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015612313576000805460ff1961ff0019909116610100171660011790555b61231c8661421c565b612325846142ea565b61232f8888614397565b61233982866144f6565b60418390558015612350576000805461ff00191690555b5050505050505050565b61236333613a01565b6123b1576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b80603e54146123f15760405162461bcd60e51b81526004018080602001828103825260258152602001806152046025913960400191505060405180910390fd5b603c5481116124315760405162461bcd60e51b81526004018080602001828103825260288152602001806150ef6028913960400191505060405180910390fd5b603d819055612443426201518061465a565b603f819055603d546040805191825260208201929092528151600080516020615173833981519152929181900390910190a16119ba603e5461413c565b612489336139ed565b6124d3576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612531576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60415490565b6033546001600160a01b031690565b61259c336139ed565b806125a657503330145b6125ec576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156126075750603a54610100900460ff16155b612658576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612774576126b18282815181106126a457fe5b60200260200101516139ed565b156126fc576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061271357fe5b60200260200101516001600160a01b0316141561276c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161268c565b50603a5462010000900460ff166127ce576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612812576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61281e60388484615057565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261288b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603b5490565b6035546001600160a01b031690565b6128f5336139ed565b61293f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6129476141d0565b565b612952336139ed565b8061295c57503330145b6129a2576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8051602080820191906000808060605b86851015612350576129c58660546146b4565b888601805160148201516034909201805193995060609190911c965090945090925090506129fe60546129f8878561465a565b9061465a565b945086851115612a45576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612a5b57506040805160208101909152600081525b612a668484836113f3565b506129b2565b612a75336139ed565b612abf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612b1d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612b625760405162461bcd60e51b81526004018080602001828103825260238152602001806152296023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612bbb57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b612c3e336139ed565b80612c4857503330145b612c8e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8080612ccb576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612d16576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16612d4f576000612d428484613517565b9050612d4d81613c91565b505b612d5a8484846146f6565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b612db333613a01565b612e01576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a54610100900460ff16612e55576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b612eb66039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114612ef35760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603954811015613094576036600060398381548110612f1157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561308c5760006036600060398481548110612f5157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603754612f959060016146b4565b81101561305d5760398281548110612fa957fe5b600091825260209091200154603780546001600160a01b039092169183908110612fcf57fe5b6000918252602090912001546001600160a01b0316141561305557603780546000198101908110612ffc57fe5b600091825260209091200154603780546001600160a01b03909216918390811061302257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061305d565b600101612f87565b50603780548061306957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101612ef6565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561311757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116130f9575b5050935050505060405180910390a161313260396000615039565b50603a805461ff0019169055565b60405481565b60008160405160200180828051906020019060200280838360005b83811015613179578181015183820152602001613161565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6131a9336139ed565b806131b857506131b833613a01565b613204576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a54610100900460ff16613258576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6132b96039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b81146132f65760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b61330260396000615039565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061335857fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b80806133c3576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6133cc336139ed565b806133db57506133db33613a01565b613427576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b814711613474576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61347d82613c91565b6134856128dd565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156134bd573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336134e86128dd565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613521614730565b6001600160a01b0316836001600160a01b0316141561354157508061105f565b816001600160a01b038416156135d057600080600061355f876147a6565b505050935093509350508061357b57600094505050505061105f565b816135b6576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6135ca836135c4888561492f565b90614988565b93505050505b60008060006135dd6149ca565b505050935093509350508061362f576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613675576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613683826135c4868661492f565b979650505050505050565b613697336139ed565b806136a157503330145b6136e7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156137f6576137338282815181106126a457fe5b1561377e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061379557fe5b60200260200101516001600160a01b031614156137ee576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161371b565b50603a5462010000900460ff161561384d576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561393e576036600085858481811061386857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613936576001603660008686858181106138a457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060378484838181106138f957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613850565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a94929390929091906060830190849080156139ce57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116139b0575b5050935050505060405180910390a1505050565b600061105f82614b39565b6035546001600160a01b0390811691161490565b6000613a0e603454613d31565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613a5a57600080fd5b505afa158015613a6e573d6000803e3d6000fd5b505050506040513d6020811015613a8457600080fd5b505192915050565b60008151604114613ae4576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b555760405162461bcd60e51b81526004018080602001828103825260228152602001806151516022913960400191505060405180910390fd5b8060ff16601b14158015613b6d57508060ff16601c14155b15613ba95760405162461bcd60e51b81526004018080602001828103825260228152602001806151936022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613c05573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613c6d576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613c83836147a6565b509098975050505050505050565b613c99614bca565b80603d541015613cf0576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603d54613cfd90826146b4565b603d819055603f5460408051928352602083019190915280516000805160206151738339815191529281900390910190a150565b6033546000906001600160a01b0316613d91576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015613ddd57600080fd5b505afa158015613df1573d6000803e3d6000fd5b505050506040513d6020811015613e0757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015613a5a57600080fd5b801580613ed8575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613eaa57600080fd5b505afa158015613ebe573d6000803e3d6000fd5b505050506040513d6020811015613ed457600080fd5b5051155b613f135760405162461bcd60e51b81526004018080602001828103825260368152602001806152996036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613f6590849061408b565b505050565b3b151590565b600080613f7c836147a6565b509198975050505050505050565b600080613f98603b54613d31565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614003578181015183820152602001613feb565b50505050905090810190601f1680156140305780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561404d57600080fd5b505afa158015614061573d6000803e3d6000fd5b505050506040513d604081101561407757600080fd5b508051602090910151909590945092505050565b60606140e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c1a9092919063ffffffff16565b805190915015613f65578080602001905160208110156140ff57600080fd5b5051613f655760405162461bcd60e51b815260040180806020018281038252602a81526020018061524c602a913960400191505060405180910390fd5b603c819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604080546001018082558151338152602081019190915281517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff929181900390910190a1565b303b1590565b600054610100900460ff16806142355750614235614216565b80614243575060005460ff16155b61427e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff161580156142a9576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156142d457603380546001600160a01b0319166001600160a01b0384161790555b80156142e6576000805461ff00191690555b5050565b600054610100900460ff16806143035750614303614216565b80614311575060005460ff16155b61434c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614377576000805460ff1961ff0019909116610100171660011790555b81156142d457603482905580156142e6576000805461ff00191690555050565b600054610100900460ff16806143b057506143b0614216565b806143be575060005460ff16155b6143f95760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614424576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff91041661449c57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015613f65576000805461ff0019169055505050565b600054610100900460ff168061450f575061450f614216565b8061451d575060005460ff16155b6145585760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614583576000805460ff1961ff0019909116610100171660011790555b61458c82614c29565b60006145966149ca565b5050505050915050600081116145e3576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603c819055603d819055603e819055614602426201518061465a565b603f81905560408051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a150508015613f65576000805461ff0019169055505050565b6000828201838110156118ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006118ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614cd6565b6001600160a01b03821661471c576147176001600160a01b03841682614d30565b613f65565b613f656001600160a01b0383168483614e15565b600061473d603b54613d31565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561477557600080fd5b505afa158015614789573d6000803e3d6000fd5b505050506040513d602081101561479f57600080fd5b5051905090565b60606000806000806000806147bc603b54613d31565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561480857600080fd5b505afa15801561481c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561484557600080fd5b8101908080516040519392919084600160201b82111561486457600080fd5b90830190602082018581111561487957600080fd5b8251600160201b81118282018810171561489257600080fd5b82525081516020918201929091019080838360005b838110156148bf5781810151838201526020016148a7565b50505050905090810190601f1680156148ec5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261493e5750600061105f565b8282028284828161494b57fe5b04146118ce5760405162461bcd60e51b81526004018080602001828103825260218152602001806151b56021913960400191505060405180910390fd5b60006118ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614e67565b60606000806000806000806149e0603b54613d31565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614a1857600080fd5b505afa158015614a2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614a5557600080fd5b8101908080516040519392919084600160201b821115614a7457600080fd5b908301906020820185811115614a8957600080fd5b8251600160201b811182820188101715614aa257600080fd5b82525081516020918201929091019080838360005b83811015614acf578181015183820152602001614ab7565b50505050905090810190601f168015614afc5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b03821615614bc357604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015614b9057600080fd5b505afa158015614ba4573d6000803e3d6000fd5b505050506040513d6020811015614bba57600080fd5b50519050610e29565b5047610e29565b603f5442111561294757614be1426201518061465a565b603f819055603c54603d8190556040805191825260208201929092528151600080516020615173833981519152929181900390910190a1565b60606111348484600085614ecc565b600054610100900460ff1680614c425750614c42614216565b80614c50575060005460ff16155b614c8b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614cb6576000805460ff1961ff0019909116610100171660011790555b81156142d457603b82905580156142e6576000805461ff00191690555050565b60008184841115614d285760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b505050900390565b80471015614d85576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114614dd0576040519150601f19603f3d011682016040523d82523d6000602084013e614dd5565b606091505b5050905080613f655760405162461bcd60e51b815260040180806020018281038252603a815260200180615117603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613f6590849061408b565b60008183614eb65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b506000838581614ec257fe5b0495945050505050565b6060614ed785613f6a565b614f28576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614f675780518252601f199092019160209182019101614f48565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fc9576040519150601f19603f3d011682016040523d82523d6000602084013e614fce565b606091505b50915091508115614fe25791506111349050565b805115614ff25780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561177557818101518382015260200161175d565b50805460008255906000526020600020908101906119ba91906150ba565b8280548282559060005260206000209081019282156150aa579160200282015b828111156150aa5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615077565b506150b69291506150cf565b5090565b5b808211156150b657600081556001016150bb565b5b808211156150b65780546001600160a01b03191681556001016150d056fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e65416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212203a6c9053eae773a9b8cd85251c386615a73f04169802ccc72ca0cc046e96bf0e64736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { @@ -267,32 +267,6 @@ func (_Wallet *WalletCallerSession) ControllerNode() ([32]byte, error) { return _Wallet.Contract.ControllerNode(&_Wallet.CallOpts) } -// ConvertToEther is a free data retrieval call binding the contract method 0xb87e21ef. -// -// Solidity: function convertToEther(address _token, uint256 _amount) constant returns(uint256) -func (_Wallet *WalletCaller) ConvertToEther(opts *bind.CallOpts, _token common.Address, _amount *big.Int) (*big.Int, error) { - var ( - ret0 = new(*big.Int) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "convertToEther", _token, _amount) - return *ret0, err -} - -// ConvertToEther is a free data retrieval call binding the contract method 0xb87e21ef. -// -// Solidity: function convertToEther(address _token, uint256 _amount) constant returns(uint256) -func (_Wallet *WalletSession) ConvertToEther(_token common.Address, _amount *big.Int) (*big.Int, error) { - return _Wallet.Contract.ConvertToEther(&_Wallet.CallOpts, _token, _amount) -} - -// ConvertToEther is a free data retrieval call binding the contract method 0xb87e21ef. -// -// Solidity: function convertToEther(address _token, uint256 _amount) constant returns(uint256) -func (_Wallet *WalletCallerSession) ConvertToEther(_token common.Address, _amount *big.Int) (*big.Int, error) { - return _Wallet.Contract.ConvertToEther(&_Wallet.CallOpts, _token, _amount) -} - // ConvertToStablecoin is a free data retrieval call binding the contract method 0xf36febda. // // Solidity: function convertToStablecoin(address _token, uint256 _amount) constant returns(uint256) @@ -319,134 +293,108 @@ func (_Wallet *WalletCallerSession) ConvertToStablecoin(_token common.Address, _ return _Wallet.Contract.ConvertToStablecoin(&_Wallet.CallOpts, _token, _amount) } -// EnsRegistry is a free data retrieval call binding the contract method 0x7d73b231. -// -// Solidity: function ensRegistry() constant returns(address) -func (_Wallet *WalletCaller) EnsRegistry(opts *bind.CallOpts) (common.Address, error) { - var ( - ret0 = new(common.Address) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "ensRegistry") - return *ret0, err -} - -// EnsRegistry is a free data retrieval call binding the contract method 0x7d73b231. -// -// Solidity: function ensRegistry() constant returns(address) -func (_Wallet *WalletSession) EnsRegistry() (common.Address, error) { - return _Wallet.Contract.EnsRegistry(&_Wallet.CallOpts) -} - -// EnsRegistry is a free data retrieval call binding the contract method 0x7d73b231. -// -// Solidity: function ensRegistry() constant returns(address) -func (_Wallet *WalletCallerSession) EnsRegistry() (common.Address, error) { - return _Wallet.Contract.EnsRegistry(&_Wallet.CallOpts) -} - -// GasTopUpLimitAvailable is a free data retrieval call binding the contract method 0x7d7d0046. +// DailyLimitAvailable is a free data retrieval call binding the contract method 0x45b12efc. // -// Solidity: function gasTopUpLimitAvailable() constant returns(uint256) -func (_Wallet *WalletCaller) GasTopUpLimitAvailable(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function dailyLimitAvailable() constant returns(uint256) +func (_Wallet *WalletCaller) DailyLimitAvailable(opts *bind.CallOpts) (*big.Int, error) { var ( ret0 = new(*big.Int) ) out := ret0 - err := _Wallet.contract.Call(opts, out, "gasTopUpLimitAvailable") + err := _Wallet.contract.Call(opts, out, "dailyLimitAvailable") return *ret0, err } -// GasTopUpLimitAvailable is a free data retrieval call binding the contract method 0x7d7d0046. +// DailyLimitAvailable is a free data retrieval call binding the contract method 0x45b12efc. // -// Solidity: function gasTopUpLimitAvailable() constant returns(uint256) -func (_Wallet *WalletSession) GasTopUpLimitAvailable() (*big.Int, error) { - return _Wallet.Contract.GasTopUpLimitAvailable(&_Wallet.CallOpts) +// Solidity: function dailyLimitAvailable() constant returns(uint256) +func (_Wallet *WalletSession) DailyLimitAvailable() (*big.Int, error) { + return _Wallet.Contract.DailyLimitAvailable(&_Wallet.CallOpts) } -// GasTopUpLimitAvailable is a free data retrieval call binding the contract method 0x7d7d0046. +// DailyLimitAvailable is a free data retrieval call binding the contract method 0x45b12efc. // -// Solidity: function gasTopUpLimitAvailable() constant returns(uint256) -func (_Wallet *WalletCallerSession) GasTopUpLimitAvailable() (*big.Int, error) { - return _Wallet.Contract.GasTopUpLimitAvailable(&_Wallet.CallOpts) +// Solidity: function dailyLimitAvailable() constant returns(uint256) +func (_Wallet *WalletCallerSession) DailyLimitAvailable() (*big.Int, error) { + return _Wallet.Contract.DailyLimitAvailable(&_Wallet.CallOpts) } -// GasTopUpLimitControllerConfirmationRequired is a free data retrieval call binding the contract method 0xf776f518. +// DailyLimitPending is a free data retrieval call binding the contract method 0x3b8252fa. // -// Solidity: function gasTopUpLimitControllerConfirmationRequired() constant returns(bool) -func (_Wallet *WalletCaller) GasTopUpLimitControllerConfirmationRequired(opts *bind.CallOpts) (bool, error) { +// Solidity: function dailyLimitPending() constant returns(uint256) +func (_Wallet *WalletCaller) DailyLimitPending(opts *bind.CallOpts) (*big.Int, error) { var ( - ret0 = new(bool) + ret0 = new(*big.Int) ) out := ret0 - err := _Wallet.contract.Call(opts, out, "gasTopUpLimitControllerConfirmationRequired") + err := _Wallet.contract.Call(opts, out, "dailyLimitPending") return *ret0, err } -// GasTopUpLimitControllerConfirmationRequired is a free data retrieval call binding the contract method 0xf776f518. +// DailyLimitPending is a free data retrieval call binding the contract method 0x3b8252fa. // -// Solidity: function gasTopUpLimitControllerConfirmationRequired() constant returns(bool) -func (_Wallet *WalletSession) GasTopUpLimitControllerConfirmationRequired() (bool, error) { - return _Wallet.Contract.GasTopUpLimitControllerConfirmationRequired(&_Wallet.CallOpts) +// Solidity: function dailyLimitPending() constant returns(uint256) +func (_Wallet *WalletSession) DailyLimitPending() (*big.Int, error) { + return _Wallet.Contract.DailyLimitPending(&_Wallet.CallOpts) } -// GasTopUpLimitControllerConfirmationRequired is a free data retrieval call binding the contract method 0xf776f518. +// DailyLimitPending is a free data retrieval call binding the contract method 0x3b8252fa. // -// Solidity: function gasTopUpLimitControllerConfirmationRequired() constant returns(bool) -func (_Wallet *WalletCallerSession) GasTopUpLimitControllerConfirmationRequired() (bool, error) { - return _Wallet.Contract.GasTopUpLimitControllerConfirmationRequired(&_Wallet.CallOpts) +// Solidity: function dailyLimitPending() constant returns(uint256) +func (_Wallet *WalletCallerSession) DailyLimitPending() (*big.Int, error) { + return _Wallet.Contract.DailyLimitPending(&_Wallet.CallOpts) } -// GasTopUpLimitPending is a free data retrieval call binding the contract method 0xcc0e7e56. +// DailyLimitValue is a free data retrieval call binding the contract method 0x4d9aa248. // -// Solidity: function gasTopUpLimitPending() constant returns(uint256) -func (_Wallet *WalletCaller) GasTopUpLimitPending(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function dailyLimitValue() constant returns(uint256) +func (_Wallet *WalletCaller) DailyLimitValue(opts *bind.CallOpts) (*big.Int, error) { var ( ret0 = new(*big.Int) ) out := ret0 - err := _Wallet.contract.Call(opts, out, "gasTopUpLimitPending") + err := _Wallet.contract.Call(opts, out, "dailyLimitValue") return *ret0, err } -// GasTopUpLimitPending is a free data retrieval call binding the contract method 0xcc0e7e56. +// DailyLimitValue is a free data retrieval call binding the contract method 0x4d9aa248. // -// Solidity: function gasTopUpLimitPending() constant returns(uint256) -func (_Wallet *WalletSession) GasTopUpLimitPending() (*big.Int, error) { - return _Wallet.Contract.GasTopUpLimitPending(&_Wallet.CallOpts) +// Solidity: function dailyLimitValue() constant returns(uint256) +func (_Wallet *WalletSession) DailyLimitValue() (*big.Int, error) { + return _Wallet.Contract.DailyLimitValue(&_Wallet.CallOpts) } -// GasTopUpLimitPending is a free data retrieval call binding the contract method 0xcc0e7e56. +// DailyLimitValue is a free data retrieval call binding the contract method 0x4d9aa248. // -// Solidity: function gasTopUpLimitPending() constant returns(uint256) -func (_Wallet *WalletCallerSession) GasTopUpLimitPending() (*big.Int, error) { - return _Wallet.Contract.GasTopUpLimitPending(&_Wallet.CallOpts) +// Solidity: function dailyLimitValue() constant returns(uint256) +func (_Wallet *WalletCallerSession) DailyLimitValue() (*big.Int, error) { + return _Wallet.Contract.DailyLimitValue(&_Wallet.CallOpts) } -// GasTopUpLimitValue is a free data retrieval call binding the contract method 0x2587a6a2. +// EnsRegistry is a free data retrieval call binding the contract method 0x7d73b231. // -// Solidity: function gasTopUpLimitValue() constant returns(uint256) -func (_Wallet *WalletCaller) GasTopUpLimitValue(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function ensRegistry() constant returns(address) +func (_Wallet *WalletCaller) EnsRegistry(opts *bind.CallOpts) (common.Address, error) { var ( - ret0 = new(*big.Int) + ret0 = new(common.Address) ) out := ret0 - err := _Wallet.contract.Call(opts, out, "gasTopUpLimitValue") + err := _Wallet.contract.Call(opts, out, "ensRegistry") return *ret0, err } -// GasTopUpLimitValue is a free data retrieval call binding the contract method 0x2587a6a2. +// EnsRegistry is a free data retrieval call binding the contract method 0x7d73b231. // -// Solidity: function gasTopUpLimitValue() constant returns(uint256) -func (_Wallet *WalletSession) GasTopUpLimitValue() (*big.Int, error) { - return _Wallet.Contract.GasTopUpLimitValue(&_Wallet.CallOpts) +// Solidity: function ensRegistry() constant returns(address) +func (_Wallet *WalletSession) EnsRegistry() (common.Address, error) { + return _Wallet.Contract.EnsRegistry(&_Wallet.CallOpts) } -// GasTopUpLimitValue is a free data retrieval call binding the contract method 0x2587a6a2. +// EnsRegistry is a free data retrieval call binding the contract method 0x7d73b231. // -// Solidity: function gasTopUpLimitValue() constant returns(uint256) -func (_Wallet *WalletCallerSession) GasTopUpLimitValue() (*big.Int, error) { - return _Wallet.Contract.GasTopUpLimitValue(&_Wallet.CallOpts) +// Solidity: function ensRegistry() constant returns(address) +func (_Wallet *WalletCallerSession) EnsRegistry() (common.Address, error) { + return _Wallet.Contract.EnsRegistry(&_Wallet.CallOpts) } // GetBalance is a free data retrieval call binding the contract method 0xf8b2cb4f. @@ -605,110 +553,6 @@ func (_Wallet *WalletCallerSession) LicenceNode() ([32]byte, error) { return _Wallet.Contract.LicenceNode(&_Wallet.CallOpts) } -// LoadLimitAvailable is a free data retrieval call binding the contract method 0x1efd0299. -// -// Solidity: function loadLimitAvailable() constant returns(uint256) -func (_Wallet *WalletCaller) LoadLimitAvailable(opts *bind.CallOpts) (*big.Int, error) { - var ( - ret0 = new(*big.Int) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "loadLimitAvailable") - return *ret0, err -} - -// LoadLimitAvailable is a free data retrieval call binding the contract method 0x1efd0299. -// -// Solidity: function loadLimitAvailable() constant returns(uint256) -func (_Wallet *WalletSession) LoadLimitAvailable() (*big.Int, error) { - return _Wallet.Contract.LoadLimitAvailable(&_Wallet.CallOpts) -} - -// LoadLimitAvailable is a free data retrieval call binding the contract method 0x1efd0299. -// -// Solidity: function loadLimitAvailable() constant returns(uint256) -func (_Wallet *WalletCallerSession) LoadLimitAvailable() (*big.Int, error) { - return _Wallet.Contract.LoadLimitAvailable(&_Wallet.CallOpts) -} - -// LoadLimitControllerConfirmationRequired is a free data retrieval call binding the contract method 0xab205993. -// -// Solidity: function loadLimitControllerConfirmationRequired() constant returns(bool) -func (_Wallet *WalletCaller) LoadLimitControllerConfirmationRequired(opts *bind.CallOpts) (bool, error) { - var ( - ret0 = new(bool) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "loadLimitControllerConfirmationRequired") - return *ret0, err -} - -// LoadLimitControllerConfirmationRequired is a free data retrieval call binding the contract method 0xab205993. -// -// Solidity: function loadLimitControllerConfirmationRequired() constant returns(bool) -func (_Wallet *WalletSession) LoadLimitControllerConfirmationRequired() (bool, error) { - return _Wallet.Contract.LoadLimitControllerConfirmationRequired(&_Wallet.CallOpts) -} - -// LoadLimitControllerConfirmationRequired is a free data retrieval call binding the contract method 0xab205993. -// -// Solidity: function loadLimitControllerConfirmationRequired() constant returns(bool) -func (_Wallet *WalletCallerSession) LoadLimitControllerConfirmationRequired() (bool, error) { - return _Wallet.Contract.LoadLimitControllerConfirmationRequired(&_Wallet.CallOpts) -} - -// LoadLimitPending is a free data retrieval call binding the contract method 0xc4856cd9. -// -// Solidity: function loadLimitPending() constant returns(uint256) -func (_Wallet *WalletCaller) LoadLimitPending(opts *bind.CallOpts) (*big.Int, error) { - var ( - ret0 = new(*big.Int) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "loadLimitPending") - return *ret0, err -} - -// LoadLimitPending is a free data retrieval call binding the contract method 0xc4856cd9. -// -// Solidity: function loadLimitPending() constant returns(uint256) -func (_Wallet *WalletSession) LoadLimitPending() (*big.Int, error) { - return _Wallet.Contract.LoadLimitPending(&_Wallet.CallOpts) -} - -// LoadLimitPending is a free data retrieval call binding the contract method 0xc4856cd9. -// -// Solidity: function loadLimitPending() constant returns(uint256) -func (_Wallet *WalletCallerSession) LoadLimitPending() (*big.Int, error) { - return _Wallet.Contract.LoadLimitPending(&_Wallet.CallOpts) -} - -// LoadLimitValue is a free data retrieval call binding the contract method 0xda84b1ed. -// -// Solidity: function loadLimitValue() constant returns(uint256) -func (_Wallet *WalletCaller) LoadLimitValue(opts *bind.CallOpts) (*big.Int, error) { - var ( - ret0 = new(*big.Int) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "loadLimitValue") - return *ret0, err -} - -// LoadLimitValue is a free data retrieval call binding the contract method 0xda84b1ed. -// -// Solidity: function loadLimitValue() constant returns(uint256) -func (_Wallet *WalletSession) LoadLimitValue() (*big.Int, error) { - return _Wallet.Contract.LoadLimitValue(&_Wallet.CallOpts) -} - -// LoadLimitValue is a free data retrieval call binding the contract method 0xda84b1ed. -// -// Solidity: function loadLimitValue() constant returns(uint256) -func (_Wallet *WalletCallerSession) LoadLimitValue() (*big.Int, error) { - return _Wallet.Contract.LoadLimitValue(&_Wallet.CallOpts) -} - // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() constant returns(address) @@ -813,110 +657,6 @@ func (_Wallet *WalletCallerSession) RelayNonce() (*big.Int, error) { return _Wallet.Contract.RelayNonce(&_Wallet.CallOpts) } -// SpendLimitAvailable is a free data retrieval call binding the contract method 0x5d2362a8. -// -// Solidity: function spendLimitAvailable() constant returns(uint256) -func (_Wallet *WalletCaller) SpendLimitAvailable(opts *bind.CallOpts) (*big.Int, error) { - var ( - ret0 = new(*big.Int) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "spendLimitAvailable") - return *ret0, err -} - -// SpendLimitAvailable is a free data retrieval call binding the contract method 0x5d2362a8. -// -// Solidity: function spendLimitAvailable() constant returns(uint256) -func (_Wallet *WalletSession) SpendLimitAvailable() (*big.Int, error) { - return _Wallet.Contract.SpendLimitAvailable(&_Wallet.CallOpts) -} - -// SpendLimitAvailable is a free data retrieval call binding the contract method 0x5d2362a8. -// -// Solidity: function spendLimitAvailable() constant returns(uint256) -func (_Wallet *WalletCallerSession) SpendLimitAvailable() (*big.Int, error) { - return _Wallet.Contract.SpendLimitAvailable(&_Wallet.CallOpts) -} - -// SpendLimitControllerConfirmationRequired is a free data retrieval call binding the contract method 0xbcb8b74a. -// -// Solidity: function spendLimitControllerConfirmationRequired() constant returns(bool) -func (_Wallet *WalletCaller) SpendLimitControllerConfirmationRequired(opts *bind.CallOpts) (bool, error) { - var ( - ret0 = new(bool) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "spendLimitControllerConfirmationRequired") - return *ret0, err -} - -// SpendLimitControllerConfirmationRequired is a free data retrieval call binding the contract method 0xbcb8b74a. -// -// Solidity: function spendLimitControllerConfirmationRequired() constant returns(bool) -func (_Wallet *WalletSession) SpendLimitControllerConfirmationRequired() (bool, error) { - return _Wallet.Contract.SpendLimitControllerConfirmationRequired(&_Wallet.CallOpts) -} - -// SpendLimitControllerConfirmationRequired is a free data retrieval call binding the contract method 0xbcb8b74a. -// -// Solidity: function spendLimitControllerConfirmationRequired() constant returns(bool) -func (_Wallet *WalletCallerSession) SpendLimitControllerConfirmationRequired() (bool, error) { - return _Wallet.Contract.SpendLimitControllerConfirmationRequired(&_Wallet.CallOpts) -} - -// SpendLimitPending is a free data retrieval call binding the contract method 0x027ef3eb. -// -// Solidity: function spendLimitPending() constant returns(uint256) -func (_Wallet *WalletCaller) SpendLimitPending(opts *bind.CallOpts) (*big.Int, error) { - var ( - ret0 = new(*big.Int) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "spendLimitPending") - return *ret0, err -} - -// SpendLimitPending is a free data retrieval call binding the contract method 0x027ef3eb. -// -// Solidity: function spendLimitPending() constant returns(uint256) -func (_Wallet *WalletSession) SpendLimitPending() (*big.Int, error) { - return _Wallet.Contract.SpendLimitPending(&_Wallet.CallOpts) -} - -// SpendLimitPending is a free data retrieval call binding the contract method 0x027ef3eb. -// -// Solidity: function spendLimitPending() constant returns(uint256) -func (_Wallet *WalletCallerSession) SpendLimitPending() (*big.Int, error) { - return _Wallet.Contract.SpendLimitPending(&_Wallet.CallOpts) -} - -// SpendLimitValue is a free data retrieval call binding the contract method 0x9b0dfd27. -// -// Solidity: function spendLimitValue() constant returns(uint256) -func (_Wallet *WalletCaller) SpendLimitValue(opts *bind.CallOpts) (*big.Int, error) { - var ( - ret0 = new(*big.Int) - ) - out := ret0 - err := _Wallet.contract.Call(opts, out, "spendLimitValue") - return *ret0, err -} - -// SpendLimitValue is a free data retrieval call binding the contract method 0x9b0dfd27. -// -// Solidity: function spendLimitValue() constant returns(uint256) -func (_Wallet *WalletSession) SpendLimitValue() (*big.Int, error) { - return _Wallet.Contract.SpendLimitValue(&_Wallet.CallOpts) -} - -// SpendLimitValue is a free data retrieval call binding the contract method 0x9b0dfd27. -// -// Solidity: function spendLimitValue() constant returns(uint256) -func (_Wallet *WalletCallerSession) SpendLimitValue() (*big.Int, error) { - return _Wallet.Contract.SpendLimitValue(&_Wallet.CallOpts) -} - // SubmittedWhitelistAddition is a free data retrieval call binding the contract method 0x26d05ab2. // // Solidity: function submittedWhitelistAddition() constant returns(bool) @@ -1136,67 +876,25 @@ func (_Wallet *WalletTransactorSession) CancelWhitelistRemoval(_hash [32]byte) ( return _Wallet.Contract.CancelWhitelistRemoval(&_Wallet.TransactOpts, _hash) } -// ConfirmGasTopUpLimitUpdate is a paid mutator transaction binding the contract method 0xf41c4319. -// -// Solidity: function confirmGasTopUpLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactor) ConfirmGasTopUpLimitUpdate(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "confirmGasTopUpLimitUpdate", _amount) -} - -// ConfirmGasTopUpLimitUpdate is a paid mutator transaction binding the contract method 0xf41c4319. -// -// Solidity: function confirmGasTopUpLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletSession) ConfirmGasTopUpLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.ConfirmGasTopUpLimitUpdate(&_Wallet.TransactOpts, _amount) -} - -// ConfirmGasTopUpLimitUpdate is a paid mutator transaction binding the contract method 0xf41c4319. -// -// Solidity: function confirmGasTopUpLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactorSession) ConfirmGasTopUpLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.ConfirmGasTopUpLimitUpdate(&_Wallet.TransactOpts, _amount) -} - -// ConfirmLoadLimitUpdate is a paid mutator transaction binding the contract method 0xf40b51f8. -// -// Solidity: function confirmLoadLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactor) ConfirmLoadLimitUpdate(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "confirmLoadLimitUpdate", _amount) -} - -// ConfirmLoadLimitUpdate is a paid mutator transaction binding the contract method 0xf40b51f8. -// -// Solidity: function confirmLoadLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletSession) ConfirmLoadLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.ConfirmLoadLimitUpdate(&_Wallet.TransactOpts, _amount) -} - -// ConfirmLoadLimitUpdate is a paid mutator transaction binding the contract method 0xf40b51f8. -// -// Solidity: function confirmLoadLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactorSession) ConfirmLoadLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.ConfirmLoadLimitUpdate(&_Wallet.TransactOpts, _amount) -} - -// ConfirmSpendLimitUpdate is a paid mutator transaction binding the contract method 0xeadd3cea. +// ConfirmDailyLimitUpdate is a paid mutator transaction binding the contract method 0x6c37a7e6. // -// Solidity: function confirmSpendLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactor) ConfirmSpendLimitUpdate(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "confirmSpendLimitUpdate", _amount) +// Solidity: function confirmDailyLimitUpdate(uint256 _amount) returns() +func (_Wallet *WalletTransactor) ConfirmDailyLimitUpdate(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { + return _Wallet.contract.Transact(opts, "confirmDailyLimitUpdate", _amount) } -// ConfirmSpendLimitUpdate is a paid mutator transaction binding the contract method 0xeadd3cea. +// ConfirmDailyLimitUpdate is a paid mutator transaction binding the contract method 0x6c37a7e6. // -// Solidity: function confirmSpendLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletSession) ConfirmSpendLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.ConfirmSpendLimitUpdate(&_Wallet.TransactOpts, _amount) +// Solidity: function confirmDailyLimitUpdate(uint256 _amount) returns() +func (_Wallet *WalletSession) ConfirmDailyLimitUpdate(_amount *big.Int) (*types.Transaction, error) { + return _Wallet.Contract.ConfirmDailyLimitUpdate(&_Wallet.TransactOpts, _amount) } -// ConfirmSpendLimitUpdate is a paid mutator transaction binding the contract method 0xeadd3cea. +// ConfirmDailyLimitUpdate is a paid mutator transaction binding the contract method 0x6c37a7e6. // -// Solidity: function confirmSpendLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactorSession) ConfirmSpendLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.ConfirmSpendLimitUpdate(&_Wallet.TransactOpts, _amount) +// Solidity: function confirmDailyLimitUpdate(uint256 _amount) returns() +func (_Wallet *WalletTransactorSession) ConfirmDailyLimitUpdate(_amount *big.Int) (*types.Transaction, error) { + return _Wallet.Contract.ConfirmDailyLimitUpdate(&_Wallet.TransactOpts, _amount) } // ConfirmWhitelistAddition is a paid mutator transaction binding the contract method 0x5adc02ab. @@ -1306,23 +1004,23 @@ func (_Wallet *WalletTransactorSession) IncreaseRelayNonce() (*types.Transaction // InitializeWallet is a paid mutator transaction binding the contract method 0x69efdfc0. // -// Solidity: function initializeWallet(address _owner_, bool _transferable_, address _ens_, bytes32 _tokenWhitelistNode_, bytes32 _controllerNode_, bytes32 _licenceNode_, uint256 _spendLimit_) returns() -func (_Wallet *WalletTransactor) InitializeWallet(opts *bind.TransactOpts, _owner_ common.Address, _transferable_ bool, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _spendLimit_ *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "initializeWallet", _owner_, _transferable_, _ens_, _tokenWhitelistNode_, _controllerNode_, _licenceNode_, _spendLimit_) +// Solidity: function initializeWallet(address _owner_, bool _transferable_, address _ens_, bytes32 _tokenWhitelistNode_, bytes32 _controllerNode_, bytes32 _licenceNode_, uint256 _dailyLimit_) returns() +func (_Wallet *WalletTransactor) InitializeWallet(opts *bind.TransactOpts, _owner_ common.Address, _transferable_ bool, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _dailyLimit_ *big.Int) (*types.Transaction, error) { + return _Wallet.contract.Transact(opts, "initializeWallet", _owner_, _transferable_, _ens_, _tokenWhitelistNode_, _controllerNode_, _licenceNode_, _dailyLimit_) } // InitializeWallet is a paid mutator transaction binding the contract method 0x69efdfc0. // -// Solidity: function initializeWallet(address _owner_, bool _transferable_, address _ens_, bytes32 _tokenWhitelistNode_, bytes32 _controllerNode_, bytes32 _licenceNode_, uint256 _spendLimit_) returns() -func (_Wallet *WalletSession) InitializeWallet(_owner_ common.Address, _transferable_ bool, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _spendLimit_ *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.InitializeWallet(&_Wallet.TransactOpts, _owner_, _transferable_, _ens_, _tokenWhitelistNode_, _controllerNode_, _licenceNode_, _spendLimit_) +// Solidity: function initializeWallet(address _owner_, bool _transferable_, address _ens_, bytes32 _tokenWhitelistNode_, bytes32 _controllerNode_, bytes32 _licenceNode_, uint256 _dailyLimit_) returns() +func (_Wallet *WalletSession) InitializeWallet(_owner_ common.Address, _transferable_ bool, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _dailyLimit_ *big.Int) (*types.Transaction, error) { + return _Wallet.Contract.InitializeWallet(&_Wallet.TransactOpts, _owner_, _transferable_, _ens_, _tokenWhitelistNode_, _controllerNode_, _licenceNode_, _dailyLimit_) } // InitializeWallet is a paid mutator transaction binding the contract method 0x69efdfc0. // -// Solidity: function initializeWallet(address _owner_, bool _transferable_, address _ens_, bytes32 _tokenWhitelistNode_, bytes32 _controllerNode_, bytes32 _licenceNode_, uint256 _spendLimit_) returns() -func (_Wallet *WalletTransactorSession) InitializeWallet(_owner_ common.Address, _transferable_ bool, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _spendLimit_ *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.InitializeWallet(&_Wallet.TransactOpts, _owner_, _transferable_, _ens_, _tokenWhitelistNode_, _controllerNode_, _licenceNode_, _spendLimit_) +// Solidity: function initializeWallet(address _owner_, bool _transferable_, address _ens_, bytes32 _tokenWhitelistNode_, bytes32 _controllerNode_, bytes32 _licenceNode_, uint256 _dailyLimit_) returns() +func (_Wallet *WalletTransactorSession) InitializeWallet(_owner_ common.Address, _transferable_ bool, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _dailyLimit_ *big.Int) (*types.Transaction, error) { + return _Wallet.Contract.InitializeWallet(&_Wallet.TransactOpts, _owner_, _transferable_, _ens_, _tokenWhitelistNode_, _controllerNode_, _licenceNode_, _dailyLimit_) } // LoadTokenCard is a paid mutator transaction binding the contract method 0x3a43199f. @@ -1367,69 +1065,6 @@ func (_Wallet *WalletTransactorSession) RenounceOwnership() (*types.Transaction, return _Wallet.Contract.RenounceOwnership(&_Wallet.TransactOpts) } -// SetGasTopUpLimit is a paid mutator transaction binding the contract method 0x0f3a85d8. -// -// Solidity: function setGasTopUpLimit(uint256 _amount) returns() -func (_Wallet *WalletTransactor) SetGasTopUpLimit(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "setGasTopUpLimit", _amount) -} - -// SetGasTopUpLimit is a paid mutator transaction binding the contract method 0x0f3a85d8. -// -// Solidity: function setGasTopUpLimit(uint256 _amount) returns() -func (_Wallet *WalletSession) SetGasTopUpLimit(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SetGasTopUpLimit(&_Wallet.TransactOpts, _amount) -} - -// SetGasTopUpLimit is a paid mutator transaction binding the contract method 0x0f3a85d8. -// -// Solidity: function setGasTopUpLimit(uint256 _amount) returns() -func (_Wallet *WalletTransactorSession) SetGasTopUpLimit(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SetGasTopUpLimit(&_Wallet.TransactOpts, _amount) -} - -// SetLoadLimit is a paid mutator transaction binding the contract method 0x3bfec254. -// -// Solidity: function setLoadLimit(uint256 _amount) returns() -func (_Wallet *WalletTransactor) SetLoadLimit(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "setLoadLimit", _amount) -} - -// SetLoadLimit is a paid mutator transaction binding the contract method 0x3bfec254. -// -// Solidity: function setLoadLimit(uint256 _amount) returns() -func (_Wallet *WalletSession) SetLoadLimit(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SetLoadLimit(&_Wallet.TransactOpts, _amount) -} - -// SetLoadLimit is a paid mutator transaction binding the contract method 0x3bfec254. -// -// Solidity: function setLoadLimit(uint256 _amount) returns() -func (_Wallet *WalletTransactorSession) SetLoadLimit(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SetLoadLimit(&_Wallet.TransactOpts, _amount) -} - -// SetSpendLimit is a paid mutator transaction binding the contract method 0x3c672eb7. -// -// Solidity: function setSpendLimit(uint256 _amount) returns() -func (_Wallet *WalletTransactor) SetSpendLimit(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "setSpendLimit", _amount) -} - -// SetSpendLimit is a paid mutator transaction binding the contract method 0x3c672eb7. -// -// Solidity: function setSpendLimit(uint256 _amount) returns() -func (_Wallet *WalletSession) SetSpendLimit(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SetSpendLimit(&_Wallet.TransactOpts, _amount) -} - -// SetSpendLimit is a paid mutator transaction binding the contract method 0x3c672eb7. -// -// Solidity: function setSpendLimit(uint256 _amount) returns() -func (_Wallet *WalletTransactorSession) SetSpendLimit(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SetSpendLimit(&_Wallet.TransactOpts, _amount) -} - // SetWhitelist is a paid mutator transaction binding the contract method 0xf4217648. // // Solidity: function setWhitelist(address[] _addresses) returns() @@ -1451,67 +1086,25 @@ func (_Wallet *WalletTransactorSession) SetWhitelist(_addresses []common.Address return _Wallet.Contract.SetWhitelist(&_Wallet.TransactOpts, _addresses) } -// SubmitGasTopUpLimitUpdate is a paid mutator transaction binding the contract method 0x74624c55. -// -// Solidity: function submitGasTopUpLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactor) SubmitGasTopUpLimitUpdate(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "submitGasTopUpLimitUpdate", _amount) -} - -// SubmitGasTopUpLimitUpdate is a paid mutator transaction binding the contract method 0x74624c55. -// -// Solidity: function submitGasTopUpLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletSession) SubmitGasTopUpLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SubmitGasTopUpLimitUpdate(&_Wallet.TransactOpts, _amount) -} - -// SubmitGasTopUpLimitUpdate is a paid mutator transaction binding the contract method 0x74624c55. -// -// Solidity: function submitGasTopUpLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactorSession) SubmitGasTopUpLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SubmitGasTopUpLimitUpdate(&_Wallet.TransactOpts, _amount) -} - -// SubmitLoadLimitUpdate is a paid mutator transaction binding the contract method 0xb221f316. -// -// Solidity: function submitLoadLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactor) SubmitLoadLimitUpdate(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "submitLoadLimitUpdate", _amount) -} - -// SubmitLoadLimitUpdate is a paid mutator transaction binding the contract method 0xb221f316. -// -// Solidity: function submitLoadLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletSession) SubmitLoadLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SubmitLoadLimitUpdate(&_Wallet.TransactOpts, _amount) -} - -// SubmitLoadLimitUpdate is a paid mutator transaction binding the contract method 0xb221f316. +// SubmitDailyLimitUpdate is a paid mutator transaction binding the contract method 0x458d07f2. // -// Solidity: function submitLoadLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactorSession) SubmitLoadLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SubmitLoadLimitUpdate(&_Wallet.TransactOpts, _amount) +// Solidity: function submitDailyLimitUpdate(uint256 _amount) returns() +func (_Wallet *WalletTransactor) SubmitDailyLimitUpdate(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { + return _Wallet.contract.Transact(opts, "submitDailyLimitUpdate", _amount) } -// SubmitSpendLimitUpdate is a paid mutator transaction binding the contract method 0x21ce918d. +// SubmitDailyLimitUpdate is a paid mutator transaction binding the contract method 0x458d07f2. // -// Solidity: function submitSpendLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactor) SubmitSpendLimitUpdate(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) { - return _Wallet.contract.Transact(opts, "submitSpendLimitUpdate", _amount) +// Solidity: function submitDailyLimitUpdate(uint256 _amount) returns() +func (_Wallet *WalletSession) SubmitDailyLimitUpdate(_amount *big.Int) (*types.Transaction, error) { + return _Wallet.Contract.SubmitDailyLimitUpdate(&_Wallet.TransactOpts, _amount) } -// SubmitSpendLimitUpdate is a paid mutator transaction binding the contract method 0x21ce918d. +// SubmitDailyLimitUpdate is a paid mutator transaction binding the contract method 0x458d07f2. // -// Solidity: function submitSpendLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletSession) SubmitSpendLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SubmitSpendLimitUpdate(&_Wallet.TransactOpts, _amount) -} - -// SubmitSpendLimitUpdate is a paid mutator transaction binding the contract method 0x21ce918d. -// -// Solidity: function submitSpendLimitUpdate(uint256 _amount) returns() -func (_Wallet *WalletTransactorSession) SubmitSpendLimitUpdate(_amount *big.Int) (*types.Transaction, error) { - return _Wallet.Contract.SubmitSpendLimitUpdate(&_Wallet.TransactOpts, _amount) +// Solidity: function submitDailyLimitUpdate(uint256 _amount) returns() +func (_Wallet *WalletTransactorSession) SubmitDailyLimitUpdate(_amount *big.Int) (*types.Transaction, error) { + return _Wallet.Contract.SubmitDailyLimitUpdate(&_Wallet.TransactOpts, _amount) } // SubmitWhitelistAddition is a paid mutator transaction binding the contract method 0x7fd004fa. @@ -2425,9 +2018,9 @@ func (_Wallet *WalletFilterer) ParseIncreasedRelayNonce(log types.Log) (*WalletI return event, nil } -// WalletLoadedTokenCardIterator is returned from FilterLoadedTokenCard and is used to iterate over the raw logs and unpacked data for LoadedTokenCard events raised by the Wallet contract. -type WalletLoadedTokenCardIterator struct { - Event *WalletLoadedTokenCard // Event containing the contract specifics and raw log +// WalletInitializedDailyLimitIterator is returned from FilterInitializedDailyLimit and is used to iterate over the raw logs and unpacked data for InitializedDailyLimit events raised by the Wallet contract. +type WalletInitializedDailyLimitIterator struct { + Event *WalletInitializedDailyLimit // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2441,7 +2034,7 @@ type WalletLoadedTokenCardIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *WalletLoadedTokenCardIterator) Next() bool { +func (it *WalletInitializedDailyLimitIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2450,7 +2043,7 @@ func (it *WalletLoadedTokenCardIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(WalletLoadedTokenCard) + it.Event = new(WalletInitializedDailyLimit) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2465,7 +2058,7 @@ func (it *WalletLoadedTokenCardIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(WalletLoadedTokenCard) + it.Event = new(WalletInitializedDailyLimit) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2481,42 +2074,42 @@ func (it *WalletLoadedTokenCardIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *WalletLoadedTokenCardIterator) Error() error { +func (it *WalletInitializedDailyLimitIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *WalletLoadedTokenCardIterator) Close() error { +func (it *WalletInitializedDailyLimitIterator) Close() error { it.sub.Unsubscribe() return nil } -// WalletLoadedTokenCard represents a LoadedTokenCard event raised by the Wallet contract. -type WalletLoadedTokenCard struct { - Asset common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos +// WalletInitializedDailyLimit represents a InitializedDailyLimit event raised by the Wallet contract. +type WalletInitializedDailyLimit struct { + Amount *big.Int + NextReset *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterLoadedTokenCard is a free log retrieval operation binding the contract event 0x5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a. +// FilterInitializedDailyLimit is a free log retrieval operation binding the contract event 0x47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa. // -// Solidity: event LoadedTokenCard(address _asset, uint256 _amount) -func (_Wallet *WalletFilterer) FilterLoadedTokenCard(opts *bind.FilterOpts) (*WalletLoadedTokenCardIterator, error) { +// Solidity: event InitializedDailyLimit(uint256 _amount, uint256 _nextReset) +func (_Wallet *WalletFilterer) FilterInitializedDailyLimit(opts *bind.FilterOpts) (*WalletInitializedDailyLimitIterator, error) { - logs, sub, err := _Wallet.contract.FilterLogs(opts, "LoadedTokenCard") + logs, sub, err := _Wallet.contract.FilterLogs(opts, "InitializedDailyLimit") if err != nil { return nil, err } - return &WalletLoadedTokenCardIterator{contract: _Wallet.contract, event: "LoadedTokenCard", logs: logs, sub: sub}, nil + return &WalletInitializedDailyLimitIterator{contract: _Wallet.contract, event: "InitializedDailyLimit", logs: logs, sub: sub}, nil } -// WatchLoadedTokenCard is a free log subscription operation binding the contract event 0x5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a. +// WatchInitializedDailyLimit is a free log subscription operation binding the contract event 0x47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa. // -// Solidity: event LoadedTokenCard(address _asset, uint256 _amount) -func (_Wallet *WalletFilterer) WatchLoadedTokenCard(opts *bind.WatchOpts, sink chan<- *WalletLoadedTokenCard) (event.Subscription, error) { +// Solidity: event InitializedDailyLimit(uint256 _amount, uint256 _nextReset) +func (_Wallet *WalletFilterer) WatchInitializedDailyLimit(opts *bind.WatchOpts, sink chan<- *WalletInitializedDailyLimit) (event.Subscription, error) { - logs, sub, err := _Wallet.contract.WatchLogs(opts, "LoadedTokenCard") + logs, sub, err := _Wallet.contract.WatchLogs(opts, "InitializedDailyLimit") if err != nil { return nil, err } @@ -2526,8 +2119,8 @@ func (_Wallet *WalletFilterer) WatchLoadedTokenCard(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(WalletLoadedTokenCard) - if err := _Wallet.contract.UnpackLog(event, "LoadedTokenCard", log); err != nil { + event := new(WalletInitializedDailyLimit) + if err := _Wallet.contract.UnpackLog(event, "InitializedDailyLimit", log); err != nil { return err } event.Raw = log @@ -2548,421 +2141,20 @@ func (_Wallet *WalletFilterer) WatchLoadedTokenCard(opts *bind.WatchOpts, sink c }), nil } -// ParseLoadedTokenCard is a log parse operation binding the contract event 0x5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a. -// -// Solidity: event LoadedTokenCard(address _asset, uint256 _amount) -func (_Wallet *WalletFilterer) ParseLoadedTokenCard(log types.Log) (*WalletLoadedTokenCard, error) { - event := new(WalletLoadedTokenCard) - if err := _Wallet.contract.UnpackLog(event, "LoadedTokenCard", log); err != nil { - return nil, err - } - return event, nil -} - -// WalletLockedOwnershipIterator is returned from FilterLockedOwnership and is used to iterate over the raw logs and unpacked data for LockedOwnership events raised by the Wallet contract. -type WalletLockedOwnershipIterator struct { - Event *WalletLockedOwnership // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *WalletLockedOwnershipIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(WalletLockedOwnership) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(WalletLockedOwnership) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *WalletLockedOwnershipIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *WalletLockedOwnershipIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// WalletLockedOwnership represents a LockedOwnership event raised by the Wallet contract. -type WalletLockedOwnership struct { - Locked common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterLockedOwnership is a free log retrieval operation binding the contract event 0x808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec122. -// -// Solidity: event LockedOwnership(address _locked) -func (_Wallet *WalletFilterer) FilterLockedOwnership(opts *bind.FilterOpts) (*WalletLockedOwnershipIterator, error) { - - logs, sub, err := _Wallet.contract.FilterLogs(opts, "LockedOwnership") - if err != nil { - return nil, err - } - return &WalletLockedOwnershipIterator{contract: _Wallet.contract, event: "LockedOwnership", logs: logs, sub: sub}, nil -} - -// WatchLockedOwnership is a free log subscription operation binding the contract event 0x808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec122. -// -// Solidity: event LockedOwnership(address _locked) -func (_Wallet *WalletFilterer) WatchLockedOwnership(opts *bind.WatchOpts, sink chan<- *WalletLockedOwnership) (event.Subscription, error) { - - logs, sub, err := _Wallet.contract.WatchLogs(opts, "LockedOwnership") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(WalletLockedOwnership) - if err := _Wallet.contract.UnpackLog(event, "LockedOwnership", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseLockedOwnership is a log parse operation binding the contract event 0x808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec122. -// -// Solidity: event LockedOwnership(address _locked) -func (_Wallet *WalletFilterer) ParseLockedOwnership(log types.Log) (*WalletLockedOwnership, error) { - event := new(WalletLockedOwnership) - if err := _Wallet.contract.UnpackLog(event, "LockedOwnership", log); err != nil { - return nil, err - } - return event, nil -} - -// WalletRemovedFromWhitelistIterator is returned from FilterRemovedFromWhitelist and is used to iterate over the raw logs and unpacked data for RemovedFromWhitelist events raised by the Wallet contract. -type WalletRemovedFromWhitelistIterator struct { - Event *WalletRemovedFromWhitelist // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *WalletRemovedFromWhitelistIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(WalletRemovedFromWhitelist) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(WalletRemovedFromWhitelist) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *WalletRemovedFromWhitelistIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *WalletRemovedFromWhitelistIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// WalletRemovedFromWhitelist represents a RemovedFromWhitelist event raised by the Wallet contract. -type WalletRemovedFromWhitelist struct { - Sender common.Address - Addresses []common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterRemovedFromWhitelist is a free log retrieval operation binding the contract event 0xd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b. -// -// Solidity: event RemovedFromWhitelist(address _sender, address[] _addresses) -func (_Wallet *WalletFilterer) FilterRemovedFromWhitelist(opts *bind.FilterOpts) (*WalletRemovedFromWhitelistIterator, error) { - - logs, sub, err := _Wallet.contract.FilterLogs(opts, "RemovedFromWhitelist") - if err != nil { - return nil, err - } - return &WalletRemovedFromWhitelistIterator{contract: _Wallet.contract, event: "RemovedFromWhitelist", logs: logs, sub: sub}, nil -} - -// WatchRemovedFromWhitelist is a free log subscription operation binding the contract event 0xd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b. -// -// Solidity: event RemovedFromWhitelist(address _sender, address[] _addresses) -func (_Wallet *WalletFilterer) WatchRemovedFromWhitelist(opts *bind.WatchOpts, sink chan<- *WalletRemovedFromWhitelist) (event.Subscription, error) { - - logs, sub, err := _Wallet.contract.WatchLogs(opts, "RemovedFromWhitelist") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(WalletRemovedFromWhitelist) - if err := _Wallet.contract.UnpackLog(event, "RemovedFromWhitelist", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseRemovedFromWhitelist is a log parse operation binding the contract event 0xd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b. -// -// Solidity: event RemovedFromWhitelist(address _sender, address[] _addresses) -func (_Wallet *WalletFilterer) ParseRemovedFromWhitelist(log types.Log) (*WalletRemovedFromWhitelist, error) { - event := new(WalletRemovedFromWhitelist) - if err := _Wallet.contract.UnpackLog(event, "RemovedFromWhitelist", log); err != nil { - return nil, err - } - return event, nil -} - -// WalletSetGasTopUpLimitIterator is returned from FilterSetGasTopUpLimit and is used to iterate over the raw logs and unpacked data for SetGasTopUpLimit events raised by the Wallet contract. -type WalletSetGasTopUpLimitIterator struct { - Event *WalletSetGasTopUpLimit // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *WalletSetGasTopUpLimitIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(WalletSetGasTopUpLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(WalletSetGasTopUpLimit) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *WalletSetGasTopUpLimitIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *WalletSetGasTopUpLimitIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// WalletSetGasTopUpLimit represents a SetGasTopUpLimit event raised by the Wallet contract. -type WalletSetGasTopUpLimit struct { - Sender common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetGasTopUpLimit is a free log retrieval operation binding the contract event 0x41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e. -// -// Solidity: event SetGasTopUpLimit(address _sender, uint256 _amount) -func (_Wallet *WalletFilterer) FilterSetGasTopUpLimit(opts *bind.FilterOpts) (*WalletSetGasTopUpLimitIterator, error) { - - logs, sub, err := _Wallet.contract.FilterLogs(opts, "SetGasTopUpLimit") - if err != nil { - return nil, err - } - return &WalletSetGasTopUpLimitIterator{contract: _Wallet.contract, event: "SetGasTopUpLimit", logs: logs, sub: sub}, nil -} - -// WatchSetGasTopUpLimit is a free log subscription operation binding the contract event 0x41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e. -// -// Solidity: event SetGasTopUpLimit(address _sender, uint256 _amount) -func (_Wallet *WalletFilterer) WatchSetGasTopUpLimit(opts *bind.WatchOpts, sink chan<- *WalletSetGasTopUpLimit) (event.Subscription, error) { - - logs, sub, err := _Wallet.contract.WatchLogs(opts, "SetGasTopUpLimit") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(WalletSetGasTopUpLimit) - if err := _Wallet.contract.UnpackLog(event, "SetGasTopUpLimit", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetGasTopUpLimit is a log parse operation binding the contract event 0x41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e. +// ParseInitializedDailyLimit is a log parse operation binding the contract event 0x47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa. // -// Solidity: event SetGasTopUpLimit(address _sender, uint256 _amount) -func (_Wallet *WalletFilterer) ParseSetGasTopUpLimit(log types.Log) (*WalletSetGasTopUpLimit, error) { - event := new(WalletSetGasTopUpLimit) - if err := _Wallet.contract.UnpackLog(event, "SetGasTopUpLimit", log); err != nil { +// Solidity: event InitializedDailyLimit(uint256 _amount, uint256 _nextReset) +func (_Wallet *WalletFilterer) ParseInitializedDailyLimit(log types.Log) (*WalletInitializedDailyLimit, error) { + event := new(WalletInitializedDailyLimit) + if err := _Wallet.contract.UnpackLog(event, "InitializedDailyLimit", log); err != nil { return nil, err } return event, nil } -// WalletSetLoadLimitIterator is returned from FilterSetLoadLimit and is used to iterate over the raw logs and unpacked data for SetLoadLimit events raised by the Wallet contract. -type WalletSetLoadLimitIterator struct { - Event *WalletSetLoadLimit // Event containing the contract specifics and raw log +// WalletLoadedTokenCardIterator is returned from FilterLoadedTokenCard and is used to iterate over the raw logs and unpacked data for LoadedTokenCard events raised by the Wallet contract. +type WalletLoadedTokenCardIterator struct { + Event *WalletLoadedTokenCard // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2976,7 +2168,7 @@ type WalletSetLoadLimitIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *WalletSetLoadLimitIterator) Next() bool { +func (it *WalletLoadedTokenCardIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2985,7 +2177,7 @@ func (it *WalletSetLoadLimitIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(WalletSetLoadLimit) + it.Event = new(WalletLoadedTokenCard) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3000,7 +2192,7 @@ func (it *WalletSetLoadLimitIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(WalletSetLoadLimit) + it.Event = new(WalletLoadedTokenCard) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3016,42 +2208,42 @@ func (it *WalletSetLoadLimitIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *WalletSetLoadLimitIterator) Error() error { +func (it *WalletLoadedTokenCardIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *WalletSetLoadLimitIterator) Close() error { +func (it *WalletLoadedTokenCardIterator) Close() error { it.sub.Unsubscribe() return nil } -// WalletSetLoadLimit represents a SetLoadLimit event raised by the Wallet contract. -type WalletSetLoadLimit struct { - Sender common.Address +// WalletLoadedTokenCard represents a LoadedTokenCard event raised by the Wallet contract. +type WalletLoadedTokenCard struct { + Asset common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterSetLoadLimit is a free log retrieval operation binding the contract event 0x0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef. +// FilterLoadedTokenCard is a free log retrieval operation binding the contract event 0x5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a. // -// Solidity: event SetLoadLimit(address _sender, uint256 _amount) -func (_Wallet *WalletFilterer) FilterSetLoadLimit(opts *bind.FilterOpts) (*WalletSetLoadLimitIterator, error) { +// Solidity: event LoadedTokenCard(address _asset, uint256 _amount) +func (_Wallet *WalletFilterer) FilterLoadedTokenCard(opts *bind.FilterOpts) (*WalletLoadedTokenCardIterator, error) { - logs, sub, err := _Wallet.contract.FilterLogs(opts, "SetLoadLimit") + logs, sub, err := _Wallet.contract.FilterLogs(opts, "LoadedTokenCard") if err != nil { return nil, err } - return &WalletSetLoadLimitIterator{contract: _Wallet.contract, event: "SetLoadLimit", logs: logs, sub: sub}, nil + return &WalletLoadedTokenCardIterator{contract: _Wallet.contract, event: "LoadedTokenCard", logs: logs, sub: sub}, nil } -// WatchSetLoadLimit is a free log subscription operation binding the contract event 0x0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef. +// WatchLoadedTokenCard is a free log subscription operation binding the contract event 0x5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a. // -// Solidity: event SetLoadLimit(address _sender, uint256 _amount) -func (_Wallet *WalletFilterer) WatchSetLoadLimit(opts *bind.WatchOpts, sink chan<- *WalletSetLoadLimit) (event.Subscription, error) { +// Solidity: event LoadedTokenCard(address _asset, uint256 _amount) +func (_Wallet *WalletFilterer) WatchLoadedTokenCard(opts *bind.WatchOpts, sink chan<- *WalletLoadedTokenCard) (event.Subscription, error) { - logs, sub, err := _Wallet.contract.WatchLogs(opts, "SetLoadLimit") + logs, sub, err := _Wallet.contract.WatchLogs(opts, "LoadedTokenCard") if err != nil { return nil, err } @@ -3061,8 +2253,8 @@ func (_Wallet *WalletFilterer) WatchSetLoadLimit(opts *bind.WatchOpts, sink chan select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(WalletSetLoadLimit) - if err := _Wallet.contract.UnpackLog(event, "SetLoadLimit", log); err != nil { + event := new(WalletLoadedTokenCard) + if err := _Wallet.contract.UnpackLog(event, "LoadedTokenCard", log); err != nil { return err } event.Raw = log @@ -3083,20 +2275,20 @@ func (_Wallet *WalletFilterer) WatchSetLoadLimit(opts *bind.WatchOpts, sink chan }), nil } -// ParseSetLoadLimit is a log parse operation binding the contract event 0x0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef. +// ParseLoadedTokenCard is a log parse operation binding the contract event 0x5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a. // -// Solidity: event SetLoadLimit(address _sender, uint256 _amount) -func (_Wallet *WalletFilterer) ParseSetLoadLimit(log types.Log) (*WalletSetLoadLimit, error) { - event := new(WalletSetLoadLimit) - if err := _Wallet.contract.UnpackLog(event, "SetLoadLimit", log); err != nil { +// Solidity: event LoadedTokenCard(address _asset, uint256 _amount) +func (_Wallet *WalletFilterer) ParseLoadedTokenCard(log types.Log) (*WalletLoadedTokenCard, error) { + event := new(WalletLoadedTokenCard) + if err := _Wallet.contract.UnpackLog(event, "LoadedTokenCard", log); err != nil { return nil, err } return event, nil } -// WalletSetSpendLimitIterator is returned from FilterSetSpendLimit and is used to iterate over the raw logs and unpacked data for SetSpendLimit events raised by the Wallet contract. -type WalletSetSpendLimitIterator struct { - Event *WalletSetSpendLimit // Event containing the contract specifics and raw log +// WalletLockedOwnershipIterator is returned from FilterLockedOwnership and is used to iterate over the raw logs and unpacked data for LockedOwnership events raised by the Wallet contract. +type WalletLockedOwnershipIterator struct { + Event *WalletLockedOwnership // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3110,7 +2302,7 @@ type WalletSetSpendLimitIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *WalletSetSpendLimitIterator) Next() bool { +func (it *WalletLockedOwnershipIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3119,7 +2311,7 @@ func (it *WalletSetSpendLimitIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(WalletSetSpendLimit) + it.Event = new(WalletLockedOwnership) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3134,7 +2326,7 @@ func (it *WalletSetSpendLimitIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(WalletSetSpendLimit) + it.Event = new(WalletLockedOwnership) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3150,42 +2342,41 @@ func (it *WalletSetSpendLimitIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *WalletSetSpendLimitIterator) Error() error { +func (it *WalletLockedOwnershipIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *WalletSetSpendLimitIterator) Close() error { +func (it *WalletLockedOwnershipIterator) Close() error { it.sub.Unsubscribe() return nil } -// WalletSetSpendLimit represents a SetSpendLimit event raised by the Wallet contract. -type WalletSetSpendLimit struct { - Sender common.Address - Amount *big.Int +// WalletLockedOwnership represents a LockedOwnership event raised by the Wallet contract. +type WalletLockedOwnership struct { + Locked common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterSetSpendLimit is a free log retrieval operation binding the contract event 0x068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21. +// FilterLockedOwnership is a free log retrieval operation binding the contract event 0x808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec122. // -// Solidity: event SetSpendLimit(address _sender, uint256 _amount) -func (_Wallet *WalletFilterer) FilterSetSpendLimit(opts *bind.FilterOpts) (*WalletSetSpendLimitIterator, error) { +// Solidity: event LockedOwnership(address _locked) +func (_Wallet *WalletFilterer) FilterLockedOwnership(opts *bind.FilterOpts) (*WalletLockedOwnershipIterator, error) { - logs, sub, err := _Wallet.contract.FilterLogs(opts, "SetSpendLimit") + logs, sub, err := _Wallet.contract.FilterLogs(opts, "LockedOwnership") if err != nil { return nil, err } - return &WalletSetSpendLimitIterator{contract: _Wallet.contract, event: "SetSpendLimit", logs: logs, sub: sub}, nil + return &WalletLockedOwnershipIterator{contract: _Wallet.contract, event: "LockedOwnership", logs: logs, sub: sub}, nil } -// WatchSetSpendLimit is a free log subscription operation binding the contract event 0x068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21. +// WatchLockedOwnership is a free log subscription operation binding the contract event 0x808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec122. // -// Solidity: event SetSpendLimit(address _sender, uint256 _amount) -func (_Wallet *WalletFilterer) WatchSetSpendLimit(opts *bind.WatchOpts, sink chan<- *WalletSetSpendLimit) (event.Subscription, error) { +// Solidity: event LockedOwnership(address _locked) +func (_Wallet *WalletFilterer) WatchLockedOwnership(opts *bind.WatchOpts, sink chan<- *WalletLockedOwnership) (event.Subscription, error) { - logs, sub, err := _Wallet.contract.WatchLogs(opts, "SetSpendLimit") + logs, sub, err := _Wallet.contract.WatchLogs(opts, "LockedOwnership") if err != nil { return nil, err } @@ -3195,8 +2386,8 @@ func (_Wallet *WalletFilterer) WatchSetSpendLimit(opts *bind.WatchOpts, sink cha select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(WalletSetSpendLimit) - if err := _Wallet.contract.UnpackLog(event, "SetSpendLimit", log); err != nil { + event := new(WalletLockedOwnership) + if err := _Wallet.contract.UnpackLog(event, "LockedOwnership", log); err != nil { return err } event.Raw = log @@ -3217,20 +2408,20 @@ func (_Wallet *WalletFilterer) WatchSetSpendLimit(opts *bind.WatchOpts, sink cha }), nil } -// ParseSetSpendLimit is a log parse operation binding the contract event 0x068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21. +// ParseLockedOwnership is a log parse operation binding the contract event 0x808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec122. // -// Solidity: event SetSpendLimit(address _sender, uint256 _amount) -func (_Wallet *WalletFilterer) ParseSetSpendLimit(log types.Log) (*WalletSetSpendLimit, error) { - event := new(WalletSetSpendLimit) - if err := _Wallet.contract.UnpackLog(event, "SetSpendLimit", log); err != nil { +// Solidity: event LockedOwnership(address _locked) +func (_Wallet *WalletFilterer) ParseLockedOwnership(log types.Log) (*WalletLockedOwnership, error) { + event := new(WalletLockedOwnership) + if err := _Wallet.contract.UnpackLog(event, "LockedOwnership", log); err != nil { return nil, err } return event, nil } -// WalletSubmittedGasTopUpLimitUpdateIterator is returned from FilterSubmittedGasTopUpLimitUpdate and is used to iterate over the raw logs and unpacked data for SubmittedGasTopUpLimitUpdate events raised by the Wallet contract. -type WalletSubmittedGasTopUpLimitUpdateIterator struct { - Event *WalletSubmittedGasTopUpLimitUpdate // Event containing the contract specifics and raw log +// WalletRemovedFromWhitelistIterator is returned from FilterRemovedFromWhitelist and is used to iterate over the raw logs and unpacked data for RemovedFromWhitelist events raised by the Wallet contract. +type WalletRemovedFromWhitelistIterator struct { + Event *WalletRemovedFromWhitelist // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3244,7 +2435,7 @@ type WalletSubmittedGasTopUpLimitUpdateIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *WalletSubmittedGasTopUpLimitUpdateIterator) Next() bool { +func (it *WalletRemovedFromWhitelistIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3253,7 +2444,7 @@ func (it *WalletSubmittedGasTopUpLimitUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(WalletSubmittedGasTopUpLimitUpdate) + it.Event = new(WalletRemovedFromWhitelist) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3268,7 +2459,7 @@ func (it *WalletSubmittedGasTopUpLimitUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(WalletSubmittedGasTopUpLimitUpdate) + it.Event = new(WalletRemovedFromWhitelist) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3284,41 +2475,42 @@ func (it *WalletSubmittedGasTopUpLimitUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *WalletSubmittedGasTopUpLimitUpdateIterator) Error() error { +func (it *WalletRemovedFromWhitelistIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *WalletSubmittedGasTopUpLimitUpdateIterator) Close() error { +func (it *WalletRemovedFromWhitelistIterator) Close() error { it.sub.Unsubscribe() return nil } -// WalletSubmittedGasTopUpLimitUpdate represents a SubmittedGasTopUpLimitUpdate event raised by the Wallet contract. -type WalletSubmittedGasTopUpLimitUpdate struct { - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos +// WalletRemovedFromWhitelist represents a RemovedFromWhitelist event raised by the Wallet contract. +type WalletRemovedFromWhitelist struct { + Sender common.Address + Addresses []common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterSubmittedGasTopUpLimitUpdate is a free log retrieval operation binding the contract event 0xaf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c. +// FilterRemovedFromWhitelist is a free log retrieval operation binding the contract event 0xd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b. // -// Solidity: event SubmittedGasTopUpLimitUpdate(uint256 _amount) -func (_Wallet *WalletFilterer) FilterSubmittedGasTopUpLimitUpdate(opts *bind.FilterOpts) (*WalletSubmittedGasTopUpLimitUpdateIterator, error) { +// Solidity: event RemovedFromWhitelist(address _sender, address[] _addresses) +func (_Wallet *WalletFilterer) FilterRemovedFromWhitelist(opts *bind.FilterOpts) (*WalletRemovedFromWhitelistIterator, error) { - logs, sub, err := _Wallet.contract.FilterLogs(opts, "SubmittedGasTopUpLimitUpdate") + logs, sub, err := _Wallet.contract.FilterLogs(opts, "RemovedFromWhitelist") if err != nil { return nil, err } - return &WalletSubmittedGasTopUpLimitUpdateIterator{contract: _Wallet.contract, event: "SubmittedGasTopUpLimitUpdate", logs: logs, sub: sub}, nil + return &WalletRemovedFromWhitelistIterator{contract: _Wallet.contract, event: "RemovedFromWhitelist", logs: logs, sub: sub}, nil } -// WatchSubmittedGasTopUpLimitUpdate is a free log subscription operation binding the contract event 0xaf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c. +// WatchRemovedFromWhitelist is a free log subscription operation binding the contract event 0xd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b. // -// Solidity: event SubmittedGasTopUpLimitUpdate(uint256 _amount) -func (_Wallet *WalletFilterer) WatchSubmittedGasTopUpLimitUpdate(opts *bind.WatchOpts, sink chan<- *WalletSubmittedGasTopUpLimitUpdate) (event.Subscription, error) { +// Solidity: event RemovedFromWhitelist(address _sender, address[] _addresses) +func (_Wallet *WalletFilterer) WatchRemovedFromWhitelist(opts *bind.WatchOpts, sink chan<- *WalletRemovedFromWhitelist) (event.Subscription, error) { - logs, sub, err := _Wallet.contract.WatchLogs(opts, "SubmittedGasTopUpLimitUpdate") + logs, sub, err := _Wallet.contract.WatchLogs(opts, "RemovedFromWhitelist") if err != nil { return nil, err } @@ -3328,8 +2520,8 @@ func (_Wallet *WalletFilterer) WatchSubmittedGasTopUpLimitUpdate(opts *bind.Watc select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(WalletSubmittedGasTopUpLimitUpdate) - if err := _Wallet.contract.UnpackLog(event, "SubmittedGasTopUpLimitUpdate", log); err != nil { + event := new(WalletRemovedFromWhitelist) + if err := _Wallet.contract.UnpackLog(event, "RemovedFromWhitelist", log); err != nil { return err } event.Raw = log @@ -3350,20 +2542,20 @@ func (_Wallet *WalletFilterer) WatchSubmittedGasTopUpLimitUpdate(opts *bind.Watc }), nil } -// ParseSubmittedGasTopUpLimitUpdate is a log parse operation binding the contract event 0xaf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c. +// ParseRemovedFromWhitelist is a log parse operation binding the contract event 0xd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b. // -// Solidity: event SubmittedGasTopUpLimitUpdate(uint256 _amount) -func (_Wallet *WalletFilterer) ParseSubmittedGasTopUpLimitUpdate(log types.Log) (*WalletSubmittedGasTopUpLimitUpdate, error) { - event := new(WalletSubmittedGasTopUpLimitUpdate) - if err := _Wallet.contract.UnpackLog(event, "SubmittedGasTopUpLimitUpdate", log); err != nil { +// Solidity: event RemovedFromWhitelist(address _sender, address[] _addresses) +func (_Wallet *WalletFilterer) ParseRemovedFromWhitelist(log types.Log) (*WalletRemovedFromWhitelist, error) { + event := new(WalletRemovedFromWhitelist) + if err := _Wallet.contract.UnpackLog(event, "RemovedFromWhitelist", log); err != nil { return nil, err } return event, nil } -// WalletSubmittedLoadLimitUpdateIterator is returned from FilterSubmittedLoadLimitUpdate and is used to iterate over the raw logs and unpacked data for SubmittedLoadLimitUpdate events raised by the Wallet contract. -type WalletSubmittedLoadLimitUpdateIterator struct { - Event *WalletSubmittedLoadLimitUpdate // Event containing the contract specifics and raw log +// WalletSetDailyLimitIterator is returned from FilterSetDailyLimit and is used to iterate over the raw logs and unpacked data for SetDailyLimit events raised by the Wallet contract. +type WalletSetDailyLimitIterator struct { + Event *WalletSetDailyLimit // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3377,7 +2569,7 @@ type WalletSubmittedLoadLimitUpdateIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *WalletSubmittedLoadLimitUpdateIterator) Next() bool { +func (it *WalletSetDailyLimitIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3386,7 +2578,7 @@ func (it *WalletSubmittedLoadLimitUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(WalletSubmittedLoadLimitUpdate) + it.Event = new(WalletSetDailyLimit) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3401,7 +2593,7 @@ func (it *WalletSubmittedLoadLimitUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(WalletSubmittedLoadLimitUpdate) + it.Event = new(WalletSetDailyLimit) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3417,41 +2609,42 @@ func (it *WalletSubmittedLoadLimitUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *WalletSubmittedLoadLimitUpdateIterator) Error() error { +func (it *WalletSetDailyLimitIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *WalletSubmittedLoadLimitUpdateIterator) Close() error { +func (it *WalletSetDailyLimitIterator) Close() error { it.sub.Unsubscribe() return nil } -// WalletSubmittedLoadLimitUpdate represents a SubmittedLoadLimitUpdate event raised by the Wallet contract. -type WalletSubmittedLoadLimitUpdate struct { +// WalletSetDailyLimit represents a SetDailyLimit event raised by the Wallet contract. +type WalletSetDailyLimit struct { + Sender common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterSubmittedLoadLimitUpdate is a free log retrieval operation binding the contract event 0xc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d10. +// FilterSetDailyLimit is a free log retrieval operation binding the contract event 0x2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768. // -// Solidity: event SubmittedLoadLimitUpdate(uint256 _amount) -func (_Wallet *WalletFilterer) FilterSubmittedLoadLimitUpdate(opts *bind.FilterOpts) (*WalletSubmittedLoadLimitUpdateIterator, error) { +// Solidity: event SetDailyLimit(address _sender, uint256 _amount) +func (_Wallet *WalletFilterer) FilterSetDailyLimit(opts *bind.FilterOpts) (*WalletSetDailyLimitIterator, error) { - logs, sub, err := _Wallet.contract.FilterLogs(opts, "SubmittedLoadLimitUpdate") + logs, sub, err := _Wallet.contract.FilterLogs(opts, "SetDailyLimit") if err != nil { return nil, err } - return &WalletSubmittedLoadLimitUpdateIterator{contract: _Wallet.contract, event: "SubmittedLoadLimitUpdate", logs: logs, sub: sub}, nil + return &WalletSetDailyLimitIterator{contract: _Wallet.contract, event: "SetDailyLimit", logs: logs, sub: sub}, nil } -// WatchSubmittedLoadLimitUpdate is a free log subscription operation binding the contract event 0xc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d10. +// WatchSetDailyLimit is a free log subscription operation binding the contract event 0x2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768. // -// Solidity: event SubmittedLoadLimitUpdate(uint256 _amount) -func (_Wallet *WalletFilterer) WatchSubmittedLoadLimitUpdate(opts *bind.WatchOpts, sink chan<- *WalletSubmittedLoadLimitUpdate) (event.Subscription, error) { +// Solidity: event SetDailyLimit(address _sender, uint256 _amount) +func (_Wallet *WalletFilterer) WatchSetDailyLimit(opts *bind.WatchOpts, sink chan<- *WalletSetDailyLimit) (event.Subscription, error) { - logs, sub, err := _Wallet.contract.WatchLogs(opts, "SubmittedLoadLimitUpdate") + logs, sub, err := _Wallet.contract.WatchLogs(opts, "SetDailyLimit") if err != nil { return nil, err } @@ -3461,8 +2654,8 @@ func (_Wallet *WalletFilterer) WatchSubmittedLoadLimitUpdate(opts *bind.WatchOpt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(WalletSubmittedLoadLimitUpdate) - if err := _Wallet.contract.UnpackLog(event, "SubmittedLoadLimitUpdate", log); err != nil { + event := new(WalletSetDailyLimit) + if err := _Wallet.contract.UnpackLog(event, "SetDailyLimit", log); err != nil { return err } event.Raw = log @@ -3483,20 +2676,20 @@ func (_Wallet *WalletFilterer) WatchSubmittedLoadLimitUpdate(opts *bind.WatchOpt }), nil } -// ParseSubmittedLoadLimitUpdate is a log parse operation binding the contract event 0xc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d10. +// ParseSetDailyLimit is a log parse operation binding the contract event 0x2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768. // -// Solidity: event SubmittedLoadLimitUpdate(uint256 _amount) -func (_Wallet *WalletFilterer) ParseSubmittedLoadLimitUpdate(log types.Log) (*WalletSubmittedLoadLimitUpdate, error) { - event := new(WalletSubmittedLoadLimitUpdate) - if err := _Wallet.contract.UnpackLog(event, "SubmittedLoadLimitUpdate", log); err != nil { +// Solidity: event SetDailyLimit(address _sender, uint256 _amount) +func (_Wallet *WalletFilterer) ParseSetDailyLimit(log types.Log) (*WalletSetDailyLimit, error) { + event := new(WalletSetDailyLimit) + if err := _Wallet.contract.UnpackLog(event, "SetDailyLimit", log); err != nil { return nil, err } return event, nil } -// WalletSubmittedSpendLimitUpdateIterator is returned from FilterSubmittedSpendLimitUpdate and is used to iterate over the raw logs and unpacked data for SubmittedSpendLimitUpdate events raised by the Wallet contract. -type WalletSubmittedSpendLimitUpdateIterator struct { - Event *WalletSubmittedSpendLimitUpdate // Event containing the contract specifics and raw log +// WalletSubmittedDailyLimitUpdateIterator is returned from FilterSubmittedDailyLimitUpdate and is used to iterate over the raw logs and unpacked data for SubmittedDailyLimitUpdate events raised by the Wallet contract. +type WalletSubmittedDailyLimitUpdateIterator struct { + Event *WalletSubmittedDailyLimitUpdate // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3510,7 +2703,7 @@ type WalletSubmittedSpendLimitUpdateIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *WalletSubmittedSpendLimitUpdateIterator) Next() bool { +func (it *WalletSubmittedDailyLimitUpdateIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3519,7 +2712,7 @@ func (it *WalletSubmittedSpendLimitUpdateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(WalletSubmittedSpendLimitUpdate) + it.Event = new(WalletSubmittedDailyLimitUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3534,7 +2727,7 @@ func (it *WalletSubmittedSpendLimitUpdateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(WalletSubmittedSpendLimitUpdate) + it.Event = new(WalletSubmittedDailyLimitUpdate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3550,41 +2743,41 @@ func (it *WalletSubmittedSpendLimitUpdateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *WalletSubmittedSpendLimitUpdateIterator) Error() error { +func (it *WalletSubmittedDailyLimitUpdateIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *WalletSubmittedSpendLimitUpdateIterator) Close() error { +func (it *WalletSubmittedDailyLimitUpdateIterator) Close() error { it.sub.Unsubscribe() return nil } -// WalletSubmittedSpendLimitUpdate represents a SubmittedSpendLimitUpdate event raised by the Wallet contract. -type WalletSubmittedSpendLimitUpdate struct { +// WalletSubmittedDailyLimitUpdate represents a SubmittedDailyLimitUpdate event raised by the Wallet contract. +type WalletSubmittedDailyLimitUpdate struct { Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterSubmittedSpendLimitUpdate is a free log retrieval operation binding the contract event 0x4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da91. +// FilterSubmittedDailyLimitUpdate is a free log retrieval operation binding the contract event 0x065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec. // -// Solidity: event SubmittedSpendLimitUpdate(uint256 _amount) -func (_Wallet *WalletFilterer) FilterSubmittedSpendLimitUpdate(opts *bind.FilterOpts) (*WalletSubmittedSpendLimitUpdateIterator, error) { +// Solidity: event SubmittedDailyLimitUpdate(uint256 _amount) +func (_Wallet *WalletFilterer) FilterSubmittedDailyLimitUpdate(opts *bind.FilterOpts) (*WalletSubmittedDailyLimitUpdateIterator, error) { - logs, sub, err := _Wallet.contract.FilterLogs(opts, "SubmittedSpendLimitUpdate") + logs, sub, err := _Wallet.contract.FilterLogs(opts, "SubmittedDailyLimitUpdate") if err != nil { return nil, err } - return &WalletSubmittedSpendLimitUpdateIterator{contract: _Wallet.contract, event: "SubmittedSpendLimitUpdate", logs: logs, sub: sub}, nil + return &WalletSubmittedDailyLimitUpdateIterator{contract: _Wallet.contract, event: "SubmittedDailyLimitUpdate", logs: logs, sub: sub}, nil } -// WatchSubmittedSpendLimitUpdate is a free log subscription operation binding the contract event 0x4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da91. +// WatchSubmittedDailyLimitUpdate is a free log subscription operation binding the contract event 0x065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec. // -// Solidity: event SubmittedSpendLimitUpdate(uint256 _amount) -func (_Wallet *WalletFilterer) WatchSubmittedSpendLimitUpdate(opts *bind.WatchOpts, sink chan<- *WalletSubmittedSpendLimitUpdate) (event.Subscription, error) { +// Solidity: event SubmittedDailyLimitUpdate(uint256 _amount) +func (_Wallet *WalletFilterer) WatchSubmittedDailyLimitUpdate(opts *bind.WatchOpts, sink chan<- *WalletSubmittedDailyLimitUpdate) (event.Subscription, error) { - logs, sub, err := _Wallet.contract.WatchLogs(opts, "SubmittedSpendLimitUpdate") + logs, sub, err := _Wallet.contract.WatchLogs(opts, "SubmittedDailyLimitUpdate") if err != nil { return nil, err } @@ -3594,8 +2787,8 @@ func (_Wallet *WalletFilterer) WatchSubmittedSpendLimitUpdate(opts *bind.WatchOp select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(WalletSubmittedSpendLimitUpdate) - if err := _Wallet.contract.UnpackLog(event, "SubmittedSpendLimitUpdate", log); err != nil { + event := new(WalletSubmittedDailyLimitUpdate) + if err := _Wallet.contract.UnpackLog(event, "SubmittedDailyLimitUpdate", log); err != nil { return err } event.Raw = log @@ -3616,12 +2809,12 @@ func (_Wallet *WalletFilterer) WatchSubmittedSpendLimitUpdate(opts *bind.WatchOp }), nil } -// ParseSubmittedSpendLimitUpdate is a log parse operation binding the contract event 0x4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da91. +// ParseSubmittedDailyLimitUpdate is a log parse operation binding the contract event 0x065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec. // -// Solidity: event SubmittedSpendLimitUpdate(uint256 _amount) -func (_Wallet *WalletFilterer) ParseSubmittedSpendLimitUpdate(log types.Log) (*WalletSubmittedSpendLimitUpdate, error) { - event := new(WalletSubmittedSpendLimitUpdate) - if err := _Wallet.contract.UnpackLog(event, "SubmittedSpendLimitUpdate", log); err != nil { +// Solidity: event SubmittedDailyLimitUpdate(uint256 _amount) +func (_Wallet *WalletFilterer) ParseSubmittedDailyLimitUpdate(log types.Log) (*WalletSubmittedDailyLimitUpdate, error) { + event := new(WalletSubmittedDailyLimitUpdate) + if err := _Wallet.contract.UnpackLog(event, "SubmittedDailyLimitUpdate", log); err != nil { return nil, err } return event, nil @@ -4299,6 +3492,140 @@ func (_Wallet *WalletFilterer) ParseTransferredOwnership(log types.Log) (*Wallet return event, nil } +// WalletUpdatedAvailableDailyLimitIterator is returned from FilterUpdatedAvailableDailyLimit and is used to iterate over the raw logs and unpacked data for UpdatedAvailableDailyLimit events raised by the Wallet contract. +type WalletUpdatedAvailableDailyLimitIterator struct { + Event *WalletUpdatedAvailableDailyLimit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletUpdatedAvailableDailyLimitIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletUpdatedAvailableDailyLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletUpdatedAvailableDailyLimit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletUpdatedAvailableDailyLimitIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletUpdatedAvailableDailyLimitIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletUpdatedAvailableDailyLimit represents a UpdatedAvailableDailyLimit event raised by the Wallet contract. +type WalletUpdatedAvailableDailyLimit struct { + Amount *big.Int + NextReset *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdatedAvailableDailyLimit is a free log retrieval operation binding the contract event 0xb8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca. +// +// Solidity: event UpdatedAvailableDailyLimit(uint256 _amount, uint256 _nextReset) +func (_Wallet *WalletFilterer) FilterUpdatedAvailableDailyLimit(opts *bind.FilterOpts) (*WalletUpdatedAvailableDailyLimitIterator, error) { + + logs, sub, err := _Wallet.contract.FilterLogs(opts, "UpdatedAvailableDailyLimit") + if err != nil { + return nil, err + } + return &WalletUpdatedAvailableDailyLimitIterator{contract: _Wallet.contract, event: "UpdatedAvailableDailyLimit", logs: logs, sub: sub}, nil +} + +// WatchUpdatedAvailableDailyLimit is a free log subscription operation binding the contract event 0xb8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca. +// +// Solidity: event UpdatedAvailableDailyLimit(uint256 _amount, uint256 _nextReset) +func (_Wallet *WalletFilterer) WatchUpdatedAvailableDailyLimit(opts *bind.WatchOpts, sink chan<- *WalletUpdatedAvailableDailyLimit) (event.Subscription, error) { + + logs, sub, err := _Wallet.contract.WatchLogs(opts, "UpdatedAvailableDailyLimit") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletUpdatedAvailableDailyLimit) + if err := _Wallet.contract.UnpackLog(event, "UpdatedAvailableDailyLimit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUpdatedAvailableDailyLimit is a log parse operation binding the contract event 0xb8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca. +// +// Solidity: event UpdatedAvailableDailyLimit(uint256 _amount, uint256 _nextReset) +func (_Wallet *WalletFilterer) ParseUpdatedAvailableDailyLimit(log types.Log) (*WalletUpdatedAvailableDailyLimit, error) { + event := new(WalletUpdatedAvailableDailyLimit) + if err := _Wallet.contract.UnpackLog(event, "UpdatedAvailableDailyLimit", log); err != nil { + return nil, err + } + return event, nil +} + // WalletUpdatedAvailableLimitIterator is returned from FilterUpdatedAvailableLimit and is used to iterate over the raw logs and unpacked data for UpdatedAvailableLimit events raised by the Wallet contract. type WalletUpdatedAvailableLimitIterator struct { Event *WalletUpdatedAvailableLimit // Event containing the contract specifics and raw log diff --git a/pkg/bindings/walletCache.go b/pkg/bindings/walletCache.go index 83c7121a..3a852666 100644 --- a/pkg/bindings/walletCache.go +++ b/pkg/bindings/walletCache.go @@ -28,19 +28,19 @@ var ( ) // WalletCacheABI is the input ABI used to generate the binding from. -const WalletCacheABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_walletImplementation_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_defaultSpendLimit_\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletDeployerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"addresspayable\",\"name\":\"_wallet\",\"type\":\"address\"}],\"name\":\"CachedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"cacheWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"cachedWallets\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cachedWalletsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultSpendLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCachePop\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletDeployerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" +const WalletCacheABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_walletImplementation_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_defaultDailyLimit_\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletDeployerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"addresspayable\",\"name\":\"_wallet\",\"type\":\"address\"}],\"name\":\"CachedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"cacheWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"cachedWallets\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cachedWalletsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultDailyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCachePop\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletDeployerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletCacheBin is the compiled bytecode used for deploying new contracts. -var WalletCacheBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306035557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966036557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386037553480156100c157600080fd5b50604051610c4e380380610c4e833981810160405260e08110156100e457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919061011a86610173565b61012384610241565b603880546001600160a01b0319166001600160a01b0389161790556039859055821561014f5760358390555b811561015b5760368290555b80156101675760378190555b505050505050506102f4565b600054610100900460ff168061018c575061018c6102ee565b8061019a575060005460ff16155b6101d55760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff16158015610200576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561022b57603380546001600160a01b0319166001600160a01b0384161790555b801561023d576000805461ff00191690555b5050565b600054610100900460ff168061025a575061025a6102ee565b80610268575060005460ff16155b6102a35760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff161580156102ce576000805460ff1961ff0019909116610100171660011790555b811561022b576034829055801561023d576000805461ff00191690555050565b303b1590565b61091d806103036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063877337b011610071578063877337b01461010657806387e8bed11461010e578063a4570e5114610116578063a7a7d3bc1461011e578063e2b4ce9714610126578063fc6cabe71461012e576100a9565b806360dbc5de146100ae57806371b9076a146100b8578063747c31d6146100d25780637d73b231146100da5780638117abc1146100fe575b600080fd5b6100b661014b565b005b6100c06102f5565b60408051918252519081900360200190f35b6100c06102fb565b6100e2610301565b604080516001600160a01b039092168252519081900360200190f35b6100e2610310565b6100c061031f565b6100c0610325565b6100e261032b565b6100c0610412565b6100c0610418565b6100e26004803603602081101561014457600080fd5b503561041e565b6000610158603754610445565b6038546040519192506000916001600160a01b039091169061017990610598565b6001600160a01b03909116815260406020820181905260008183018190529051918290036080019190f0801580156101b5573d6000803e3d6000fd5b509050806001600160a01b03166369efdfc08360016101d2610301565b6036546101dd610418565b6035546039546040518863ffffffff1660e01b815260040180886001600160a01b031681526020018715158152602001866001600160a01b03168152602001858152602001848152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b5050603a80546001810182556000919091527fa2999d817b6757290b50e8ecf3fa939673403dd35c97de392fdb343b4015ce9e0180546001600160a01b0385166001600160a01b0319909116811790915560408051918252517f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e9350908190036020019150a15050565b603a5490565b60355481565b6033546001600160a01b031690565b6038546001600160a01b031681565b60365481565b60375481565b6000610338603754610445565b6001600160a01b0316336001600160a01b03161461039d576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b603a54600111156103b0576103b061014b565b603a80546000919060001981019081106103c657fe5b600091825260209091200154603a80546001600160a01b03909216925090806103eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60395481565b60345490565b603a818154811061042b57fe5b6000918252602090912001546001600160a01b0316905081565b6033546000906001600160a01b03166104a5576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156104f157600080fd5b505afa158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d602081101561059057600080fd5b505192915050565b610342806105a68339019056fe60806040526040516103423803806103428339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610223565b6101be8161021d60201b61009a1760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610307603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b151590565b60d6806102316000396000f3fe6080604052366044576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b6050604c6052565b6077565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156095573d6000f35b3d6000fd5b3b15159056fea26469706673582212208ed6ffa1ceda73e7f2255c282c025b00bc31cb41fe1328bb37a62d3c6f61c36564736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212207a01a1535ccd36f983b6c551c35eee574f22405875890a444fe668db4bbe00a364736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletCacheBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306035557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966036557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386037553480156100c157600080fd5b50604051610c4e380380610c4e833981810160405260e08110156100e457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919061011a86610173565b61012384610241565b603880546001600160a01b0319166001600160a01b0389161790556039859055821561014f5760358390555b811561015b5760368290555b80156101675760378190555b505050505050506102f4565b600054610100900460ff168061018c575061018c6102ee565b8061019a575060005460ff16155b6101d55760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff16158015610200576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561022b57603380546001600160a01b0319166001600160a01b0384161790555b801561023d576000805461ff00191690555b5050565b600054610100900460ff168061025a575061025a6102ee565b80610268575060005460ff16155b6102a35760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff161580156102ce576000805460ff1961ff0019909116610100171660011790555b811561022b576034829055801561023d576000805461ff00191690555050565b303b1590565b61091d806103036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063877337b011610071578063877337b01461010657806387e8bed11461010e578063a4570e5114610116578063c76b08881461011e578063e2b4ce9714610126578063fc6cabe71461012e576100a9565b806360dbc5de146100ae57806371b9076a146100b8578063747c31d6146100d25780637d73b231146100da5780638117abc1146100fe575b600080fd5b6100b661014b565b005b6100c06102f5565b60408051918252519081900360200190f35b6100c06102fb565b6100e2610301565b604080516001600160a01b039092168252519081900360200190f35b6100e2610310565b6100c061031f565b6100c0610325565b6100e261032b565b6100c0610412565b6100c0610418565b6100e26004803603602081101561014457600080fd5b503561041e565b6000610158603754610445565b6038546040519192506000916001600160a01b039091169061017990610598565b6001600160a01b03909116815260406020820181905260008183018190529051918290036080019190f0801580156101b5573d6000803e3d6000fd5b509050806001600160a01b03166369efdfc08360016101d2610301565b6036546101dd610418565b6035546039546040518863ffffffff1660e01b815260040180886001600160a01b031681526020018715158152602001866001600160a01b03168152602001858152602001848152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b5050603a80546001810182556000919091527fa2999d817b6757290b50e8ecf3fa939673403dd35c97de392fdb343b4015ce9e0180546001600160a01b0385166001600160a01b0319909116811790915560408051918252517f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e9350908190036020019150a15050565b603a5490565b60355481565b6033546001600160a01b031690565b6038546001600160a01b031681565b60365481565b60375481565b6000610338603754610445565b6001600160a01b0316336001600160a01b03161461039d576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b603a54600111156103b0576103b061014b565b603a80546000919060001981019081106103c657fe5b600091825260209091200154603a80546001600160a01b03909216925090806103eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60395481565b60345490565b603a818154811061042b57fe5b6000918252602090912001546001600160a01b0316905081565b6033546000906001600160a01b03166104a5576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156104f157600080fd5b505afa158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d602081101561059057600080fd5b505192915050565b610342806105a68339019056fe60806040526040516103423803806103428339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610223565b6101be8161021d60201b61009a1760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610307603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b151590565b60d6806102316000396000f3fe6080604052366044576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b6050604c6052565b6077565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156095573d6000f35b3d6000fd5b3b15159056fea26469706673582212208ed6ffa1ceda73e7f2255c282c025b00bc31cb41fe1328bb37a62d3c6f61c36564736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220010927c745faf736853b28f4fd21791a7cc7f7ff9b177199a87aaaea816e07cd64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletCache deploys a new Ethereum contract, binding an instance of WalletCache to it. -func DeployWalletCache(auth *bind.TransactOpts, backend bind.ContractBackend, _walletImplementation_ common.Address, _ens_ common.Address, _defaultSpendLimit_ *big.Int, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _tokenWhitelistNode_ [32]byte, _walletDeployerNode_ [32]byte) (common.Address, *types.Transaction, *WalletCache, error) { +func DeployWalletCache(auth *bind.TransactOpts, backend bind.ContractBackend, _walletImplementation_ common.Address, _ens_ common.Address, _defaultDailyLimit_ *big.Int, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _tokenWhitelistNode_ [32]byte, _walletDeployerNode_ [32]byte) (common.Address, *types.Transaction, *WalletCache, error) { parsed, err := abi.JSON(strings.NewReader(WalletCacheABI)) if err != nil { return common.Address{}, nil, nil, err } - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(WalletCacheBin), backend, _walletImplementation_, _ens_, _defaultSpendLimit_, _controllerNode_, _licenceNode_, _tokenWhitelistNode_, _walletDeployerNode_) + address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(WalletCacheBin), backend, _walletImplementation_, _ens_, _defaultDailyLimit_, _controllerNode_, _licenceNode_, _tokenWhitelistNode_, _walletDeployerNode_) if err != nil { return common.Address{}, nil, nil, err } @@ -267,30 +267,30 @@ func (_WalletCache *WalletCacheCallerSession) ControllerNode() ([32]byte, error) return _WalletCache.Contract.ControllerNode(&_WalletCache.CallOpts) } -// DefaultSpendLimit is a free data retrieval call binding the contract method 0xa7a7d3bc. +// DefaultDailyLimit is a free data retrieval call binding the contract method 0xc76b0888. // -// Solidity: function defaultSpendLimit() constant returns(uint256) -func (_WalletCache *WalletCacheCaller) DefaultSpendLimit(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function defaultDailyLimit() constant returns(uint256) +func (_WalletCache *WalletCacheCaller) DefaultDailyLimit(opts *bind.CallOpts) (*big.Int, error) { var ( ret0 = new(*big.Int) ) out := ret0 - err := _WalletCache.contract.Call(opts, out, "defaultSpendLimit") + err := _WalletCache.contract.Call(opts, out, "defaultDailyLimit") return *ret0, err } -// DefaultSpendLimit is a free data retrieval call binding the contract method 0xa7a7d3bc. +// DefaultDailyLimit is a free data retrieval call binding the contract method 0xc76b0888. // -// Solidity: function defaultSpendLimit() constant returns(uint256) -func (_WalletCache *WalletCacheSession) DefaultSpendLimit() (*big.Int, error) { - return _WalletCache.Contract.DefaultSpendLimit(&_WalletCache.CallOpts) +// Solidity: function defaultDailyLimit() constant returns(uint256) +func (_WalletCache *WalletCacheSession) DefaultDailyLimit() (*big.Int, error) { + return _WalletCache.Contract.DefaultDailyLimit(&_WalletCache.CallOpts) } -// DefaultSpendLimit is a free data retrieval call binding the contract method 0xa7a7d3bc. +// DefaultDailyLimit is a free data retrieval call binding the contract method 0xc76b0888. // -// Solidity: function defaultSpendLimit() constant returns(uint256) -func (_WalletCache *WalletCacheCallerSession) DefaultSpendLimit() (*big.Int, error) { - return _WalletCache.Contract.DefaultSpendLimit(&_WalletCache.CallOpts) +// Solidity: function defaultDailyLimit() constant returns(uint256) +func (_WalletCache *WalletCacheCallerSession) DefaultDailyLimit() (*big.Int, error) { + return _WalletCache.Contract.DefaultDailyLimit(&_WalletCache.CallOpts) } // EnsRegistry is a free data retrieval call binding the contract method 0x7d73b231. diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index fa3a3ccc..37c603d9 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -28,10 +28,10 @@ var ( ) // WalletDeployerABI is the input ABI used to generate the binding from. -const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedSpendLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedGasTopUpLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedLoadLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_spendLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasTopUpLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_loadLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" +const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be886035553480156200007a57600080fd5b5060405162000d4e38038062000d4e83398181016040526060811015620000a057600080fd5b5080516020820151604090920151909190620000bc83620000dd565b620000c782620001b4565b8015620000d45760358190555b50505062000270565b600054610100900460ff1680620000f95750620000f96200026a565b8062000108575060005460ff16155b620001455760405162461bcd60e51b815260040180806020018281038252602e81526020018062000d20602e913960400191505060405180910390fd5b600054610100900460ff1615801562000171576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200019d57603380546001600160a01b0319166001600160a01b0384161790555b8015620001b0576000805461ff00191690555b5050565b600054610100900460ff1680620001d05750620001d06200026a565b80620001df575060005460ff16155b6200021c5760405162461bcd60e51b815260040180806020018281038252602e81526020018062000d20602e913960400191505060405180910390fd5b600054610100900460ff1615801562000248576000805460ff1961ff0019909116610100171660011790555b81156200019d5760348290558015620001b0576000805461ff00191690555050565b303b1590565b610aa080620002806000396000f3fe6080604052600436106100555760003560e01c80637d73b2311461005a57806380a12c0e1461008b5780638d682ef7146100be578063a6ede3d414610180578063c8cc2fc2146101a7578063e2b4ce97146101da575b600080fd5b34801561006657600080fd5b5061006f6101ef565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f600480360360208110156100ae57600080fd5b50356001600160a01b03166101fe565b61017e60048036036101408110156100d557600080fd5b6001600160a01b03823581169260208101359091169160408201351515916060810135151591608082013515159160a081013515159160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184602083028401116401000000008311171561017357600080fd5b509092509050610219565b005b34801561018c57600080fd5b506101956106f3565b60408051918252519081900360200190f35b3480156101b357600080fd5b5061017e600480360360208110156101ca57600080fd5b50356001600160a01b03166106f9565b3480156101e657600080fd5b50610195610897565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b6102223361089d565b610273576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b038b811660009081526036602052604090205416156102ca5760405162461bcd60e51b8152600401808060200182810382526021815260200180610a4a6021913960400191505060405180910390fd5b8a6001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b50516001600160a01b031614610385576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610392603554610928565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103cc57600080fd5b505af11580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051604080516001600160a01b038084168252808f1660208301528f168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b038c8116600090815260366020526040902080546001600160a01b03191691831691909117905589156104e057806001600160a01b0316633c672eb7876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050505b881561054557806001600160a01b0316630f3a85d8866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050505b87156105aa57806001600160a01b0316633bfec254856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050505b861561063e57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038e8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050505060003411156106e5576040516001600160a01b038d16903480156108fc02916000818181858888f193505050501580156106e3573d6000803e3d6000fd5b505b505050505050505050505050565b60355481565b6107023361089d565b610753576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6000610760603554610928565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050505050565b60345490565b60006108aa603454610928565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156108f657600080fd5b505afa15801561090a573d6000803e3d6000fd5b505050506040513d602081101561092057600080fd5b505192915050565b6033546000906001600160a01b0316610988576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d60208110156109fe57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108f657600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220d3b603c025674e11b442953c5e63ada8c7429a23932e6557550aafc132e761b664736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b5060405162000c4838038062000c488339818101604052606081101561009e57600080fd5b50805160208201516040909201519091906100b8836100d5565b6100c1826101a4565b80156100cd5760358190555b505050610258565b600054610100900460ff16806100ee57506100ee610252565b806100fc575060005460ff16155b6101385760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610163576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018e57603380546001600160a01b0319166001600160a01b0384161790555b80156101a0576000805461ff00191690555b5050565b600054610100900460ff16806101bd57506101bd610252565b806101cb575060005460ff16155b6102075760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610232576000805460ff1961ff0019909116610100171660011790555b811561018e57603482905580156101a0576000805461ff00191690555050565b303b1590565b6109b280620002686000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105db565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105ea565b34801561016c57600080fd5b50610175610605565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b031661060b565b3480156101c657600080fd5b506101756107a9565b6101d8336107af565b610229576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b0387811660009081526036602052604090205416156102805760405162461bcd60e51b815260040180806020018281038252602181526020018061095c6021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c357600080fd5b505afa1580156102d7573d6000803e3d6000fd5b505050506040513d60208110156102ed57600080fd5b50516001600160a01b03161461033b576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b600061034860355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049657806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050505b841561052a57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b5050505060003411156105d1576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105cf573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b610614336107af565b610665576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b600061067260355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b505050505050565b60345490565b60006107bc60345461083a565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505192915050565b6033546000906001600160a01b031661089a576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d602081101561091057600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561080857600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a26469706673582212209b75e7596a8cacfafc8f140320e0f1ffddaba7e5dd59645a4648b7df5af7772f64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { @@ -314,25 +314,25 @@ func (_WalletDeployer *WalletDeployerTransactorSession) DeployWallet(_owner comm return _WalletDeployer.Contract.DeployWallet(&_WalletDeployer.TransactOpts, _owner) } -// MigrateWallet is a paid mutator transaction binding the contract method 0x8d682ef7. +// MigrateWallet is a paid mutator transaction binding the contract method 0x4b316f7a. // -// Solidity: function migrateWallet(address _owner, address _oldWallet, bool _initializedSpendLimit, bool _initializedGasTopUpLimit, bool _initializedLoadLimit, bool _initializedWhitelist, uint256 _spendLimit, uint256 _gasTopUpLimit, uint256 _loadLimit, address[] _whitelistedAddresses) returns() -func (_WalletDeployer *WalletDeployerTransactor) MigrateWallet(opts *bind.TransactOpts, _owner common.Address, _oldWallet common.Address, _initializedSpendLimit bool, _initializedGasTopUpLimit bool, _initializedLoadLimit bool, _initializedWhitelist bool, _spendLimit *big.Int, _gasTopUpLimit *big.Int, _loadLimit *big.Int, _whitelistedAddresses []common.Address) (*types.Transaction, error) { - return _WalletDeployer.contract.Transact(opts, "migrateWallet", _owner, _oldWallet, _initializedSpendLimit, _initializedGasTopUpLimit, _initializedLoadLimit, _initializedWhitelist, _spendLimit, _gasTopUpLimit, _loadLimit, _whitelistedAddresses) +// Solidity: function migrateWallet(address _owner, address _oldWallet, bool _initializedDailyLimit, bool _initializedWhitelist, uint256 _dailyLimit, address[] _whitelistedAddresses) returns() +func (_WalletDeployer *WalletDeployerTransactor) MigrateWallet(opts *bind.TransactOpts, _owner common.Address, _oldWallet common.Address, _initializedDailyLimit bool, _initializedWhitelist bool, _dailyLimit *big.Int, _whitelistedAddresses []common.Address) (*types.Transaction, error) { + return _WalletDeployer.contract.Transact(opts, "migrateWallet", _owner, _oldWallet, _initializedDailyLimit, _initializedWhitelist, _dailyLimit, _whitelistedAddresses) } -// MigrateWallet is a paid mutator transaction binding the contract method 0x8d682ef7. +// MigrateWallet is a paid mutator transaction binding the contract method 0x4b316f7a. // -// Solidity: function migrateWallet(address _owner, address _oldWallet, bool _initializedSpendLimit, bool _initializedGasTopUpLimit, bool _initializedLoadLimit, bool _initializedWhitelist, uint256 _spendLimit, uint256 _gasTopUpLimit, uint256 _loadLimit, address[] _whitelistedAddresses) returns() -func (_WalletDeployer *WalletDeployerSession) MigrateWallet(_owner common.Address, _oldWallet common.Address, _initializedSpendLimit bool, _initializedGasTopUpLimit bool, _initializedLoadLimit bool, _initializedWhitelist bool, _spendLimit *big.Int, _gasTopUpLimit *big.Int, _loadLimit *big.Int, _whitelistedAddresses []common.Address) (*types.Transaction, error) { - return _WalletDeployer.Contract.MigrateWallet(&_WalletDeployer.TransactOpts, _owner, _oldWallet, _initializedSpendLimit, _initializedGasTopUpLimit, _initializedLoadLimit, _initializedWhitelist, _spendLimit, _gasTopUpLimit, _loadLimit, _whitelistedAddresses) +// Solidity: function migrateWallet(address _owner, address _oldWallet, bool _initializedDailyLimit, bool _initializedWhitelist, uint256 _dailyLimit, address[] _whitelistedAddresses) returns() +func (_WalletDeployer *WalletDeployerSession) MigrateWallet(_owner common.Address, _oldWallet common.Address, _initializedDailyLimit bool, _initializedWhitelist bool, _dailyLimit *big.Int, _whitelistedAddresses []common.Address) (*types.Transaction, error) { + return _WalletDeployer.Contract.MigrateWallet(&_WalletDeployer.TransactOpts, _owner, _oldWallet, _initializedDailyLimit, _initializedWhitelist, _dailyLimit, _whitelistedAddresses) } -// MigrateWallet is a paid mutator transaction binding the contract method 0x8d682ef7. +// MigrateWallet is a paid mutator transaction binding the contract method 0x4b316f7a. // -// Solidity: function migrateWallet(address _owner, address _oldWallet, bool _initializedSpendLimit, bool _initializedGasTopUpLimit, bool _initializedLoadLimit, bool _initializedWhitelist, uint256 _spendLimit, uint256 _gasTopUpLimit, uint256 _loadLimit, address[] _whitelistedAddresses) returns() -func (_WalletDeployer *WalletDeployerTransactorSession) MigrateWallet(_owner common.Address, _oldWallet common.Address, _initializedSpendLimit bool, _initializedGasTopUpLimit bool, _initializedLoadLimit bool, _initializedWhitelist bool, _spendLimit *big.Int, _gasTopUpLimit *big.Int, _loadLimit *big.Int, _whitelistedAddresses []common.Address) (*types.Transaction, error) { - return _WalletDeployer.Contract.MigrateWallet(&_WalletDeployer.TransactOpts, _owner, _oldWallet, _initializedSpendLimit, _initializedGasTopUpLimit, _initializedLoadLimit, _initializedWhitelist, _spendLimit, _gasTopUpLimit, _loadLimit, _whitelistedAddresses) +// Solidity: function migrateWallet(address _owner, address _oldWallet, bool _initializedDailyLimit, bool _initializedWhitelist, uint256 _dailyLimit, address[] _whitelistedAddresses) returns() +func (_WalletDeployer *WalletDeployerTransactorSession) MigrateWallet(_owner common.Address, _oldWallet common.Address, _initializedDailyLimit bool, _initializedWhitelist bool, _dailyLimit *big.Int, _whitelistedAddresses []common.Address) (*types.Transaction, error) { + return _WalletDeployer.Contract.MigrateWallet(&_WalletDeployer.TransactOpts, _owner, _oldWallet, _initializedDailyLimit, _initializedWhitelist, _dailyLimit, _whitelistedAddresses) } // WalletDeployerDeployedWalletIterator is returned from FilterDeployedWallet and is used to iterate over the raw logs and unpacked data for DeployedWallet events raised by the WalletDeployer contract. diff --git a/tools/slither/slither.db.json b/tools/slither/slither.db.json index 45bd52ba..fb31cc06 100644 --- a/tools/slither/slither.db.json +++ b/tools/slither/slither.db.json @@ -1 +1 @@ -[{"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] \ No newline at end of file +[{"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3520, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [85], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#85)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L85)\n", "id": "8f154ecfc5824e3b987314d0a2f5e529d003edef50be40d366b15f160d857e1c", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3451, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [83], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#83)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L83)\n", "id": "b29cdb51c11b209fa6cbae7acc6eaa1139948abf695c7c82dd1dc272cd236cd2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 4041, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4149, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "23ece0d6e57608c6c57add03c9e58044d357633c8cdab578e48ffcc72f8dd86a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4843, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "37e5ae3fd03f04bd9c52830c372f415d3a32cab48338b06a9d00c56d48f3804b", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4880, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "791c5f8285dd95ff5dce366ad41ab8ab3c4a8d5d8f5298264ad1051199435b2c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 27982, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [583], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 28560, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [592], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#563-593) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#583)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#592)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L563-L593) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L583)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L592)\n", "id": "1e0b234747807fbb5245169570b2b7fb9f07f78ac1afa8e1be592afb1191efcd", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20581, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [437], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20705, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [440], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#418-441):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#437)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#440)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L418-L441):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L437)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L440)\n", "id": "3a35fb3bee7858d2e5e2dfe41b98c442fc8f9866db6fcf679aac1497dd758db8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30453, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [626], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30675, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [632], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#626)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#632)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L626)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L632)\n", "id": "c1a1c741ecef7d0ec1b421c1549e41a3c5de2e1da3390cb741cba8a00040234a", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30774, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [636], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30912, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [639], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#636)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#639)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L636)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L639)\n", "id": "74afa6312b4eb14d15de176af037db957fb7df33a76e2c3d7a6117ac1a1fb22c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23188, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23253, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23413, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [497], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#481-498):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#491)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#492)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#497)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L481-L498):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L491)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L492)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L497)\n", "id": "77327b12f5a5c8c7964e978adbdcbe01bc6a937432ecfb766b117fde7232da34", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14216, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [298], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#297-303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#298)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L297-L303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L298)\n", "id": "73f9c07c94114fae31ba92b92e7ca095093697dfe1a61ce7761e9a46eaf02c44", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16062, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [342], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#341-349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#342)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L341-L349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L342)\n", "id": "1c842f34e2052c53a5f20027dbc7c11424de7477557713fb885cc7a53b3665e8", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24279, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [513], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24352, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [515], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#507-516):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#513)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#515)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L507-L516):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L513)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L515)\n", "id": "5a28f20b36e8e9aae8526a3b185ba0f8347ba516247b1ee9cbead8908ff836a7", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 28593, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [604], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 29171, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [613], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#588-614) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#604)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#613)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L588-L614) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L604)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L613)\n", "id": "9bda81c6a396bc6e5af3ccdc7c781eb7305c37a94bf87db3c9ccbfeb5ae5b3eb", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 12438, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265], "starting_column": 52, "ending_column": 79}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeDailyLimit", "source_mapping": {"start": 12391, "length": 321, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265, 266, 267, 268, 269, 270, 271, 272], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeDailyLimit(uint256,bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#265) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L265) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "e5bb81054c4147256bf3aaebe7ef7cdeedd5bd5182d32dc08afd644b0f9e0116", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 29569, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [622], "starting_column": 9, "ending_column": 23}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.executeTransaction(address,uint256,bytes)._value (../../contracts/wallet.sol#622) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.executeTransaction(address,uint256,bytes)._value](../../contracts/wallet.sol#L622) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "90bfcd468a576433295dc979256339d182d72c064d955766641725f26a929749", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 19206, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419], "starting_column": 24, "ending_column": 38}, "type_specific_fields": {"parent": {"type": "function", "name": "isNotZero", "source_mapping": {"start": 19187, "length": 94, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419, 420, 421, 422], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "isNotZero(uint256)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.isNotZero(uint256)._value (../../contracts/wallet.sol#419) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.isNotZero(uint256)._value](../../contracts/wallet.sol#L419) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "1e335a6c51143516ea2aacb63ebfae14b068c26f1fc55aea86d9a1530cbc2bf0", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20593, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [448], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20717, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [451], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#429-452):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#448)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#451)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L429-L452):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L448)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L451)\n", "id": "ec79e84527eef8746fa9ec647fc99366159eb2609e4213975bce953241a24c1b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30827, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [644], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 31049, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [650], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#644)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#650)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L644)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L650)\n", "id": "ecf8400146003c4b7b7e44c18ee6d86249787a89215657c598f9e3cb3b72319b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 31148, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 31286, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [657], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#654)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#657)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L654)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L657)\n", "id": "b5a1c394bd5406139a742ec93ae05a64d17d4f50fa4e3bd83ce7efa4d1a53cfa", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23200, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [502], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23265, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [503], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23425, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#492-509):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#502)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#503)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#508)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L492-L509):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L502)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L503)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L508)\n", "id": "3b788cb6a30b3f641772c7e7583a408a1bd7f85564b33648492384ce610931e7", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 13877, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L301)\n", "id": "a93d679b54ec36d932fcff36e21d2a580a2dfd6cdf2a38b039c9235b67baccb9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 16104, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#352-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#353)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L352-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L353)\n", "id": "e35a8401ff8c2805f39f87764799163bcf46e67e24e9f0dc1ca8af147616ab94", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24291, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [524], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24364, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [526], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#518-527):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#524)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#526)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L518-L527):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L524)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L526)\n", "id": "c43efe0610e655bec1cdb32e08e234a043a3b790995b3136e9ab21e91d3bc687", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] \ No newline at end of file From 8bef16e267b1449d1a859e87f342a5ba154e074e Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Tue, 10 Nov 2020 15:05:37 +0100 Subject: [PATCH 31/66] Update missing bindings --- pkg/bindings/mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/wallet.go | 2 +- pkg/bindings/walletDeployer.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index 1fe86f74..b0ecb498 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220d1d75993e589dae5803aa213c7a76070a945ba14532814a828e195f19c14d4b064736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220c1c27a76a46f48473e31be46d926e14b553b3bf96bff30f5bbfe60d26bf75aff64736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index ca182d35..e74e7633 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603b5534801561007957600080fd5b50615304806100896000396000f3fe60806040526004361061025c5760003560e01c8063715018a611610144578063cbd2ac68116100b6578063de212bf31161007a578063de212bf314610cd9578063e2b4ce9714610cee578063e61c51ca14610d03578063f36febda14610d2d578063f421764814610d66578063f8b2cb4f14610de15761025c565b8063cbd2ac6814610b98578063cccdc55614610bc2578063cd7958dd14610bd7578063ce0b5bd514610c85578063d251fefc14610caf5761025c565b80638da5cb5b116101085780638da5cb5b14610a2a57806390e690c714610a3f578063aaf1fc6214610a54578063b242e53414610b05578063be40ba7914610b40578063beabacc814610b555761025c565b8063715018a61461093f578063747c31d6146109545780637d73b231146109695780637fd004fa1461099a578063877337b014610a155761025c565b80633b8252fa116101dd57806347b55a9d116101a157806347b55a9d146107eb5780634d9aa248146108005780635adc02ab146108155780636137d6701461083f57806369efdfc0146108ba5780636c37a7e6146109155761025c565b80633b8252fa146105ed5780633f579f4214610614578063458d07f2146106da57806345b12efc1461070457806346efe0ed146107195761025c565b80632121dc75116102245780632121dc75146104ff57806326d05ab214610514578063294f40251461052957806332531c3c1461058e5780633a43199f146105c15761025c565b806301ffc9a714610261578063100f23fd146102a95780631127b57e146102d55780631626ba7e1461035f57806320c13b0b14610434575b600080fd5b34801561026d57600080fd5b506102956004803603602081101561028457600080fd5b50356001600160e01b031916610e14565b604080519115158252519081900360200190f35b3480156102b557600080fd5b506102d3600480360360208110156102cc57600080fd5b5035610e2e565b005b3480156102e157600080fd5b506102ea610fd5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032457818101518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036b57600080fd5b506104176004803603604081101561038257600080fd5b81359190810190604081016020820135600160201b8111156103a357600080fd5b8201836020820111156103b557600080fd5b803590602001918460018302840111600160201b831117156103d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ff6945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561044057600080fd5b506104176004803603604081101561045757600080fd5b810190602081018135600160201b81111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111600160201b831117156104a457600080fd5b919390929091602081019035600160201b8111156104c157600080fd5b8201836020820111156104d357600080fd5b803590602001918460018302840111600160201b831117156104f457600080fd5b509092509050611065565b34801561050b57600080fd5b5061029561113c565b34801561052057600080fd5b5061029561114d565b34801561053557600080fd5b5061053e611156565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057a578181015183820152602001610562565b505050509050019250505060405180910390f35b34801561059a57600080fd5b50610295600480360360208110156105b157600080fd5b50356001600160a01b03166111b8565b6102d3600480360360408110156105d757600080fd5b506001600160a01b0381351690602001356111cd565b3480156105f957600080fd5b506106026113ed565b60408051918252519081900360200190f35b34801561062057600080fd5b506102ea6004803603606081101561063757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460018302840111600160201b8311171561069957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113f3945050505050565b3480156106e657600080fd5b506102d3600480360360208110156106fd57600080fd5b50356118d5565b34801561071057600080fd5b506106026119bd565b34801561072557600080fd5b506102d36004803603606081101561073c57600080fd5b81359190810190604081016020820135600160201b81111561075d57600080fd5b82018360208201111561076f57600080fd5b803590602001918460018302840111600160201b8311171561079057600080fd5b919390929091602081019035600160201b8111156107ad57600080fd5b8201836020820111156107bf57600080fd5b803590602001918460018302840111600160201b831117156107e057600080fd5b5090925090506119db565b3480156107f757600080fd5b5061053e611d22565b34801561080c57600080fd5b50610602611d82565b34801561082157600080fd5b506102d36004803603602081101561083857600080fd5b5035611d88565b34801561084b57600080fd5b506102d36004803603602081101561086257600080fd5b810190602081018135600160201b81111561087c57600080fd5b82018360208201111561088e57600080fd5b803590602001918460208302840111600160201b831117156108af57600080fd5b50909250905061205e565b3480156108c657600080fd5b506102d3600480360360e08110156108dd57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c00135612286565b34801561092157600080fd5b506102d36004803603602081101561093857600080fd5b503561235a565b34801561094b57600080fd5b506102d3612480565b34801561096057600080fd5b5061060261257e565b34801561097557600080fd5b5061097e612584565b604080516001600160a01b039092168252519081900360200190f35b3480156109a657600080fd5b506102d3600480360360208110156109bd57600080fd5b810190602081018135600160201b8111156109d757600080fd5b8201836020820111156109e957600080fd5b803590602001918460208302840111600160201b83111715610a0a57600080fd5b509092509050612593565b348015610a2157600080fd5b506106026128d7565b348015610a3657600080fd5b5061097e6128dd565b348015610a4b57600080fd5b506102d36128ec565b348015610a6057600080fd5b506102d360048036036020811015610a7757600080fd5b810190602081018135600160201b811115610a9157600080fd5b820183602082011115610aa357600080fd5b803590602001918460018302840111600160201b83111715610ac457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612949945050505050565b348015610b1157600080fd5b506102d360048036036040811015610b2857600080fd5b506001600160a01b0381351690602001351515612a6c565b348015610b4c57600080fd5b50610295612c26565b348015610b6157600080fd5b506102d360048036036060811015610b7857600080fd5b506001600160a01b03813581169160208101359091169060400135612c35565b348015610ba457600080fd5b506102d360048036036020811015610bbb57600080fd5b5035612daa565b348015610bce57600080fd5b50610602613140565b348015610be357600080fd5b5061060260048036036020811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460208302840111600160201b83111715610c4757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613146945050505050565b348015610c9157600080fd5b506102d360048036036020811015610ca857600080fd5b50356131a0565b348015610cbb57600080fd5b5061097e60048036036020811015610cd257600080fd5b503561334b565b348015610ce557600080fd5b50610295613372565b348015610cfa57600080fd5b50610602613380565b348015610d0f57600080fd5b506102d360048036036020811015610d2657600080fd5b5035613386565b348015610d3957600080fd5b5061060260048036036040811015610d5057600080fd5b506001600160a01b038135169060200135613517565b348015610d7257600080fd5b506102d360048036036020811015610d8957600080fd5b810190602081018135600160201b811115610da357600080fd5b820183602082011115610db557600080fd5b803590602001918460208302840111600160201b83111715610dd657600080fd5b50909250905061368e565b348015610ded57600080fd5b5061060260048036036020811015610e0457600080fd5b50356001600160a01b03166139e2565b6001600160e01b031981166301ffc9a760e01b145b919050565b610e37336139ed565b80610e465750610e4633613a01565b610e92576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a5460ff16610ee1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610f446038805480602002602001604051908101604052809291908181526020018280548015610f3a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f1c575b5050505050613146565b8114610f815760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b610f8d60386000615039565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806110038484613a8c565b905061100e816139ed565b611053576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b95506110dc9450869350899150889081908401838280828437600092019190915250610ff692505050565b6001600160e01b03191614611128576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b60366020526000908152604090205460ff1681565b6111d6336139ed565b806111e057503330145b611226576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b61122f82613c77565b611275576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006112818383613517565b905061128c81613c91565b6000611299604154613d31565b90506001600160a01b03841615611332576112be6001600160a01b0385168285613e52565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b505050506113a3565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561138957600080fd5b505af115801561139d573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603e5490565b60606113fe336139ed565b8061140857503330145b61144e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff1661148857600061147b600085613517565b905061148681613c91565b505b61149a846001600160a01b0316613f6a565b80156114aa57506114aa84613f70565b1561167a576000806114bc8685613f8a565b6001600160a01b038216600090815260366020526040902054919350915060ff166114fa5760006114ed8783613517565b90506114f881613c91565b505b61150d6001600160a01b0387168561408b565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061154057fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156115d25781810151838201526020016115ba565b50505050905090810190601f1680156115ff5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561163257818101518382015260200161161a565b50505050905090810190601f16801561165f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506118ce915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106116b95780518252601f19909201916020918201910161169a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461171b576040519150601f19603f3d011682016040523d82523d6000602084013e611720565b606091505b50915091508181906117b05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561177557818101518382015260200161175d565b50505050905090810190601f1680156117a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561182c578181015183820152602001611814565b50505050905090810190601f1680156118595780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561188c578181015183820152602001611874565b50505050905090810190601f1680156118b95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6118de336139ed565b806118e857503330145b61192e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603e819055603c54811161198657603d5481101561197857603d819055603f5460408051838152602081019290925280516000805160206151738339815191529281900390910190a15b6119818161413c565b6119ba565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000603f544211156119d25750603c5461114a565b50603d5461114a565b6119e433613a01565b611a32576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b60004690506000611aa9823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061417f565b9050631626ba7e60e01b6001600160e01b031916611afd8286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ff692505050565b6001600160e01b03191614611b49576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6040548714611b8b576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611b936141d0565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611bf3576040519150601f19603f3d011682016040523d82523d6000602084013e611bf8565b606091505b5091509150818190611c4b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611cda578181015183820152602001611cc2565b50505050905090810190601f168015611d075780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b603c5490565b611d9133613a01565b611ddf576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a5460ff16611e2e576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611e8f6038805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114611ecc5760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603854811015611fb3576036600060388381548110611eea57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611fab5760016036600060388481548110611f2957fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603880546037919083908110611f6f57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611ecf565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561203657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612018575b5050935050505060405180910390a161205160386000615039565b50603a805460ff19169055565b612067336139ed565b8061207157503330145b6120b7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156120d25750603a54610100900460ff16155b612123576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff1661217c576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806121c0576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6121cc60398383615057565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d1928592859261223b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff168061229f575061229f614216565b806122ad575060005460ff16155b6122e85760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015612313576000805460ff1961ff0019909116610100171660011790555b61231c8661421c565b612325846142ea565b61232f8888614397565b61233982866144f6565b60418390558015612350576000805461ff00191690555b5050505050505050565b61236333613a01565b6123b1576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b80603e54146123f15760405162461bcd60e51b81526004018080602001828103825260258152602001806152046025913960400191505060405180910390fd5b603c5481116124315760405162461bcd60e51b81526004018080602001828103825260288152602001806150ef6028913960400191505060405180910390fd5b603d819055612443426201518061465a565b603f819055603d546040805191825260208201929092528151600080516020615173833981519152929181900390910190a16119ba603e5461413c565b612489336139ed565b6124d3576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612531576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60415490565b6033546001600160a01b031690565b61259c336139ed565b806125a657503330145b6125ec576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156126075750603a54610100900460ff16155b612658576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612774576126b18282815181106126a457fe5b60200260200101516139ed565b156126fc576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061271357fe5b60200260200101516001600160a01b0316141561276c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161268c565b50603a5462010000900460ff166127ce576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612812576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61281e60388484615057565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261288b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603b5490565b6035546001600160a01b031690565b6128f5336139ed565b61293f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6129476141d0565b565b612952336139ed565b8061295c57503330145b6129a2576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8051602080820191906000808060605b86851015612350576129c58660546146b4565b888601805160148201516034909201805193995060609190911c965090945090925090506129fe60546129f8878561465a565b9061465a565b945086851115612a45576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612a5b57506040805160208101909152600081525b612a668484836113f3565b506129b2565b612a75336139ed565b612abf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612b1d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612b625760405162461bcd60e51b81526004018080602001828103825260238152602001806152296023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612bbb57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b612c3e336139ed565b80612c4857503330145b612c8e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8080612ccb576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612d16576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16612d4f576000612d428484613517565b9050612d4d81613c91565b505b612d5a8484846146f6565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b612db333613a01565b612e01576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a54610100900460ff16612e55576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b612eb66039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114612ef35760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603954811015613094576036600060398381548110612f1157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561308c5760006036600060398481548110612f5157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603754612f959060016146b4565b81101561305d5760398281548110612fa957fe5b600091825260209091200154603780546001600160a01b039092169183908110612fcf57fe5b6000918252602090912001546001600160a01b0316141561305557603780546000198101908110612ffc57fe5b600091825260209091200154603780546001600160a01b03909216918390811061302257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061305d565b600101612f87565b50603780548061306957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101612ef6565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561311757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116130f9575b5050935050505060405180910390a161313260396000615039565b50603a805461ff0019169055565b60405481565b60008160405160200180828051906020019060200280838360005b83811015613179578181015183820152602001613161565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6131a9336139ed565b806131b857506131b833613a01565b613204576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a54610100900460ff16613258576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6132b96039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b81146132f65760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b61330260396000615039565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061335857fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b80806133c3576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6133cc336139ed565b806133db57506133db33613a01565b613427576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b814711613474576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61347d82613c91565b6134856128dd565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156134bd573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336134e86128dd565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613521614730565b6001600160a01b0316836001600160a01b0316141561354157508061105f565b816001600160a01b038416156135d057600080600061355f876147a6565b505050935093509350508061357b57600094505050505061105f565b816135b6576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6135ca836135c4888561492f565b90614988565b93505050505b60008060006135dd6149ca565b505050935093509350508061362f576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613675576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613683826135c4868661492f565b979650505050505050565b613697336139ed565b806136a157503330145b6136e7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156137f6576137338282815181106126a457fe5b1561377e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061379557fe5b60200260200101516001600160a01b031614156137ee576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161371b565b50603a5462010000900460ff161561384d576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561393e576036600085858481811061386857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613936576001603660008686858181106138a457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060378484838181106138f957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613850565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a94929390929091906060830190849080156139ce57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116139b0575b5050935050505060405180910390a1505050565b600061105f82614b39565b6035546001600160a01b0390811691161490565b6000613a0e603454613d31565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613a5a57600080fd5b505afa158015613a6e573d6000803e3d6000fd5b505050506040513d6020811015613a8457600080fd5b505192915050565b60008151604114613ae4576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b555760405162461bcd60e51b81526004018080602001828103825260228152602001806151516022913960400191505060405180910390fd5b8060ff16601b14158015613b6d57508060ff16601c14155b15613ba95760405162461bcd60e51b81526004018080602001828103825260228152602001806151936022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613c05573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613c6d576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613c83836147a6565b509098975050505050505050565b613c99614bca565b80603d541015613cf0576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603d54613cfd90826146b4565b603d819055603f5460408051928352602083019190915280516000805160206151738339815191529281900390910190a150565b6033546000906001600160a01b0316613d91576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015613ddd57600080fd5b505afa158015613df1573d6000803e3d6000fd5b505050506040513d6020811015613e0757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015613a5a57600080fd5b801580613ed8575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613eaa57600080fd5b505afa158015613ebe573d6000803e3d6000fd5b505050506040513d6020811015613ed457600080fd5b5051155b613f135760405162461bcd60e51b81526004018080602001828103825260368152602001806152996036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613f6590849061408b565b505050565b3b151590565b600080613f7c836147a6565b509198975050505050505050565b600080613f98603b54613d31565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614003578181015183820152602001613feb565b50505050905090810190601f1680156140305780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561404d57600080fd5b505afa158015614061573d6000803e3d6000fd5b505050506040513d604081101561407757600080fd5b508051602090910151909590945092505050565b60606140e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c1a9092919063ffffffff16565b805190915015613f65578080602001905160208110156140ff57600080fd5b5051613f655760405162461bcd60e51b815260040180806020018281038252602a81526020018061524c602a913960400191505060405180910390fd5b603c819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604080546001018082558151338152602081019190915281517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff929181900390910190a1565b303b1590565b600054610100900460ff16806142355750614235614216565b80614243575060005460ff16155b61427e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff161580156142a9576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156142d457603380546001600160a01b0319166001600160a01b0384161790555b80156142e6576000805461ff00191690555b5050565b600054610100900460ff16806143035750614303614216565b80614311575060005460ff16155b61434c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614377576000805460ff1961ff0019909116610100171660011790555b81156142d457603482905580156142e6576000805461ff00191690555050565b600054610100900460ff16806143b057506143b0614216565b806143be575060005460ff16155b6143f95760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614424576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff91041661449c57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015613f65576000805461ff0019169055505050565b600054610100900460ff168061450f575061450f614216565b8061451d575060005460ff16155b6145585760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614583576000805460ff1961ff0019909116610100171660011790555b61458c82614c29565b60006145966149ca565b5050505050915050600081116145e3576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603c819055603d819055603e819055614602426201518061465a565b603f81905560408051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a150508015613f65576000805461ff0019169055505050565b6000828201838110156118ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006118ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614cd6565b6001600160a01b03821661471c576147176001600160a01b03841682614d30565b613f65565b613f656001600160a01b0383168483614e15565b600061473d603b54613d31565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561477557600080fd5b505afa158015614789573d6000803e3d6000fd5b505050506040513d602081101561479f57600080fd5b5051905090565b60606000806000806000806147bc603b54613d31565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561480857600080fd5b505afa15801561481c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561484557600080fd5b8101908080516040519392919084600160201b82111561486457600080fd5b90830190602082018581111561487957600080fd5b8251600160201b81118282018810171561489257600080fd5b82525081516020918201929091019080838360005b838110156148bf5781810151838201526020016148a7565b50505050905090810190601f1680156148ec5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261493e5750600061105f565b8282028284828161494b57fe5b04146118ce5760405162461bcd60e51b81526004018080602001828103825260218152602001806151b56021913960400191505060405180910390fd5b60006118ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614e67565b60606000806000806000806149e0603b54613d31565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614a1857600080fd5b505afa158015614a2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614a5557600080fd5b8101908080516040519392919084600160201b821115614a7457600080fd5b908301906020820185811115614a8957600080fd5b8251600160201b811182820188101715614aa257600080fd5b82525081516020918201929091019080838360005b83811015614acf578181015183820152602001614ab7565b50505050905090810190601f168015614afc5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b03821615614bc357604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015614b9057600080fd5b505afa158015614ba4573d6000803e3d6000fd5b505050506040513d6020811015614bba57600080fd5b50519050610e29565b5047610e29565b603f5442111561294757614be1426201518061465a565b603f819055603c54603d8190556040805191825260208201929092528151600080516020615173833981519152929181900390910190a1565b60606111348484600085614ecc565b600054610100900460ff1680614c425750614c42614216565b80614c50575060005460ff16155b614c8b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614cb6576000805460ff1961ff0019909116610100171660011790555b81156142d457603b82905580156142e6576000805461ff00191690555050565b60008184841115614d285760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b505050900390565b80471015614d85576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114614dd0576040519150601f19603f3d011682016040523d82523d6000602084013e614dd5565b606091505b5050905080613f655760405162461bcd60e51b815260040180806020018281038252603a815260200180615117603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613f6590849061408b565b60008183614eb65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b506000838581614ec257fe5b0495945050505050565b6060614ed785613f6a565b614f28576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614f675780518252601f199092019160209182019101614f48565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fc9576040519150601f19603f3d011682016040523d82523d6000602084013e614fce565b606091505b50915091508115614fe25791506111349050565b805115614ff25780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561177557818101518382015260200161175d565b50805460008255906000526020600020908101906119ba91906150ba565b8280548282559060005260206000209081019282156150aa579160200282015b828111156150aa5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615077565b506150b69291506150cf565b5090565b5b808211156150b657600081556001016150bb565b5b808211156150b65780546001600160a01b03191681556001016150d056fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e65416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212203a6c9053eae773a9b8cd85251c386615a73f04169802ccc72ca0cc046e96bf0e64736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603b5534801561007957600080fd5b50615304806100896000396000f3fe60806040526004361061025c5760003560e01c8063715018a611610144578063cbd2ac68116100b6578063de212bf31161007a578063de212bf314610cd9578063e2b4ce9714610cee578063e61c51ca14610d03578063f36febda14610d2d578063f421764814610d66578063f8b2cb4f14610de15761025c565b8063cbd2ac6814610b98578063cccdc55614610bc2578063cd7958dd14610bd7578063ce0b5bd514610c85578063d251fefc14610caf5761025c565b80638da5cb5b116101085780638da5cb5b14610a2a57806390e690c714610a3f578063aaf1fc6214610a54578063b242e53414610b05578063be40ba7914610b40578063beabacc814610b555761025c565b8063715018a61461093f578063747c31d6146109545780637d73b231146109695780637fd004fa1461099a578063877337b014610a155761025c565b80633b8252fa116101dd57806347b55a9d116101a157806347b55a9d146107eb5780634d9aa248146108005780635adc02ab146108155780636137d6701461083f57806369efdfc0146108ba5780636c37a7e6146109155761025c565b80633b8252fa146105ed5780633f579f4214610614578063458d07f2146106da57806345b12efc1461070457806346efe0ed146107195761025c565b80632121dc75116102245780632121dc75146104ff57806326d05ab214610514578063294f40251461052957806332531c3c1461058e5780633a43199f146105c15761025c565b806301ffc9a714610261578063100f23fd146102a95780631127b57e146102d55780631626ba7e1461035f57806320c13b0b14610434575b600080fd5b34801561026d57600080fd5b506102956004803603602081101561028457600080fd5b50356001600160e01b031916610e14565b604080519115158252519081900360200190f35b3480156102b557600080fd5b506102d3600480360360208110156102cc57600080fd5b5035610e2e565b005b3480156102e157600080fd5b506102ea610fd5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032457818101518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036b57600080fd5b506104176004803603604081101561038257600080fd5b81359190810190604081016020820135600160201b8111156103a357600080fd5b8201836020820111156103b557600080fd5b803590602001918460018302840111600160201b831117156103d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ff6945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561044057600080fd5b506104176004803603604081101561045757600080fd5b810190602081018135600160201b81111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111600160201b831117156104a457600080fd5b919390929091602081019035600160201b8111156104c157600080fd5b8201836020820111156104d357600080fd5b803590602001918460018302840111600160201b831117156104f457600080fd5b509092509050611065565b34801561050b57600080fd5b5061029561113c565b34801561052057600080fd5b5061029561114d565b34801561053557600080fd5b5061053e611156565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057a578181015183820152602001610562565b505050509050019250505060405180910390f35b34801561059a57600080fd5b50610295600480360360208110156105b157600080fd5b50356001600160a01b03166111b8565b6102d3600480360360408110156105d757600080fd5b506001600160a01b0381351690602001356111cd565b3480156105f957600080fd5b506106026113ed565b60408051918252519081900360200190f35b34801561062057600080fd5b506102ea6004803603606081101561063757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460018302840111600160201b8311171561069957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113f3945050505050565b3480156106e657600080fd5b506102d3600480360360208110156106fd57600080fd5b50356118d5565b34801561071057600080fd5b506106026119bd565b34801561072557600080fd5b506102d36004803603606081101561073c57600080fd5b81359190810190604081016020820135600160201b81111561075d57600080fd5b82018360208201111561076f57600080fd5b803590602001918460018302840111600160201b8311171561079057600080fd5b919390929091602081019035600160201b8111156107ad57600080fd5b8201836020820111156107bf57600080fd5b803590602001918460018302840111600160201b831117156107e057600080fd5b5090925090506119db565b3480156107f757600080fd5b5061053e611d22565b34801561080c57600080fd5b50610602611d82565b34801561082157600080fd5b506102d36004803603602081101561083857600080fd5b5035611d88565b34801561084b57600080fd5b506102d36004803603602081101561086257600080fd5b810190602081018135600160201b81111561087c57600080fd5b82018360208201111561088e57600080fd5b803590602001918460208302840111600160201b831117156108af57600080fd5b50909250905061205e565b3480156108c657600080fd5b506102d3600480360360e08110156108dd57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c00135612286565b34801561092157600080fd5b506102d36004803603602081101561093857600080fd5b503561235a565b34801561094b57600080fd5b506102d3612480565b34801561096057600080fd5b5061060261257e565b34801561097557600080fd5b5061097e612584565b604080516001600160a01b039092168252519081900360200190f35b3480156109a657600080fd5b506102d3600480360360208110156109bd57600080fd5b810190602081018135600160201b8111156109d757600080fd5b8201836020820111156109e957600080fd5b803590602001918460208302840111600160201b83111715610a0a57600080fd5b509092509050612593565b348015610a2157600080fd5b506106026128d7565b348015610a3657600080fd5b5061097e6128dd565b348015610a4b57600080fd5b506102d36128ec565b348015610a6057600080fd5b506102d360048036036020811015610a7757600080fd5b810190602081018135600160201b811115610a9157600080fd5b820183602082011115610aa357600080fd5b803590602001918460018302840111600160201b83111715610ac457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612949945050505050565b348015610b1157600080fd5b506102d360048036036040811015610b2857600080fd5b506001600160a01b0381351690602001351515612a6c565b348015610b4c57600080fd5b50610295612c26565b348015610b6157600080fd5b506102d360048036036060811015610b7857600080fd5b506001600160a01b03813581169160208101359091169060400135612c35565b348015610ba457600080fd5b506102d360048036036020811015610bbb57600080fd5b5035612daa565b348015610bce57600080fd5b50610602613140565b348015610be357600080fd5b5061060260048036036020811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460208302840111600160201b83111715610c4757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613146945050505050565b348015610c9157600080fd5b506102d360048036036020811015610ca857600080fd5b50356131a0565b348015610cbb57600080fd5b5061097e60048036036020811015610cd257600080fd5b503561334b565b348015610ce557600080fd5b50610295613372565b348015610cfa57600080fd5b50610602613380565b348015610d0f57600080fd5b506102d360048036036020811015610d2657600080fd5b5035613386565b348015610d3957600080fd5b5061060260048036036040811015610d5057600080fd5b506001600160a01b038135169060200135613517565b348015610d7257600080fd5b506102d360048036036020811015610d8957600080fd5b810190602081018135600160201b811115610da357600080fd5b820183602082011115610db557600080fd5b803590602001918460208302840111600160201b83111715610dd657600080fd5b50909250905061368e565b348015610ded57600080fd5b5061060260048036036020811015610e0457600080fd5b50356001600160a01b03166139e2565b6001600160e01b031981166301ffc9a760e01b145b919050565b610e37336139ed565b80610e465750610e4633613a01565b610e92576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a5460ff16610ee1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610f446038805480602002602001604051908101604052809291908181526020018280548015610f3a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f1c575b5050505050613146565b8114610f815760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b610f8d60386000615039565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806110038484613a8c565b905061100e816139ed565b611053576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b95506110dc9450869350899150889081908401838280828437600092019190915250610ff692505050565b6001600160e01b03191614611128576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b60366020526000908152604090205460ff1681565b6111d6336139ed565b806111e057503330145b611226576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b61122f82613c77565b611275576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006112818383613517565b905061128c81613c91565b6000611299604154613d31565b90506001600160a01b03841615611332576112be6001600160a01b0385168285613e52565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b505050506113a3565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561138957600080fd5b505af115801561139d573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603e5490565b60606113fe336139ed565b8061140857503330145b61144e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff1661148857600061147b600085613517565b905061148681613c91565b505b61149a846001600160a01b0316613f6a565b80156114aa57506114aa84613f70565b1561167a576000806114bc8685613f8a565b6001600160a01b038216600090815260366020526040902054919350915060ff166114fa5760006114ed8783613517565b90506114f881613c91565b505b61150d6001600160a01b0387168561408b565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061154057fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156115d25781810151838201526020016115ba565b50505050905090810190601f1680156115ff5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561163257818101518382015260200161161a565b50505050905090810190601f16801561165f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506118ce915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106116b95780518252601f19909201916020918201910161169a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461171b576040519150601f19603f3d011682016040523d82523d6000602084013e611720565b606091505b50915091508181906117b05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561177557818101518382015260200161175d565b50505050905090810190601f1680156117a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561182c578181015183820152602001611814565b50505050905090810190601f1680156118595780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561188c578181015183820152602001611874565b50505050905090810190601f1680156118b95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6118de336139ed565b806118e857503330145b61192e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603e819055603c54811161198657603d5481101561197857603d819055603f5460408051838152602081019290925280516000805160206151738339815191529281900390910190a15b6119818161413c565b6119ba565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000603f544211156119d25750603c5461114a565b50603d5461114a565b6119e433613a01565b611a32576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b60004690506000611aa9823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061417f565b9050631626ba7e60e01b6001600160e01b031916611afd8286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ff692505050565b6001600160e01b03191614611b49576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6040548714611b8b576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611b936141d0565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611bf3576040519150601f19603f3d011682016040523d82523d6000602084013e611bf8565b606091505b5091509150818190611c4b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611cda578181015183820152602001611cc2565b50505050905090810190601f168015611d075780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b603c5490565b611d9133613a01565b611ddf576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a5460ff16611e2e576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611e8f6038805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114611ecc5760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603854811015611fb3576036600060388381548110611eea57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611fab5760016036600060388481548110611f2957fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603880546037919083908110611f6f57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611ecf565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561203657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612018575b5050935050505060405180910390a161205160386000615039565b50603a805460ff19169055565b612067336139ed565b8061207157503330145b6120b7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156120d25750603a54610100900460ff16155b612123576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff1661217c576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806121c0576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6121cc60398383615057565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d1928592859261223b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff168061229f575061229f614216565b806122ad575060005460ff16155b6122e85760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015612313576000805460ff1961ff0019909116610100171660011790555b61231c8661421c565b612325846142ea565b61232f8888614397565b61233982866144f6565b60418390558015612350576000805461ff00191690555b5050505050505050565b61236333613a01565b6123b1576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b80603e54146123f15760405162461bcd60e51b81526004018080602001828103825260258152602001806152046025913960400191505060405180910390fd5b603c5481116124315760405162461bcd60e51b81526004018080602001828103825260288152602001806150ef6028913960400191505060405180910390fd5b603d819055612443426201518061465a565b603f819055603d546040805191825260208201929092528151600080516020615173833981519152929181900390910190a16119ba603e5461413c565b612489336139ed565b6124d3576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612531576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60415490565b6033546001600160a01b031690565b61259c336139ed565b806125a657503330145b6125ec576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156126075750603a54610100900460ff16155b612658576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612774576126b18282815181106126a457fe5b60200260200101516139ed565b156126fc576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061271357fe5b60200260200101516001600160a01b0316141561276c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161268c565b50603a5462010000900460ff166127ce576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612812576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61281e60388484615057565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261288b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603b5490565b6035546001600160a01b031690565b6128f5336139ed565b61293f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6129476141d0565b565b612952336139ed565b8061295c57503330145b6129a2576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8051602080820191906000808060605b86851015612350576129c58660546146b4565b888601805160148201516034909201805193995060609190911c965090945090925090506129fe60546129f8878561465a565b9061465a565b945086851115612a45576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612a5b57506040805160208101909152600081525b612a668484836113f3565b506129b2565b612a75336139ed565b612abf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612b1d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612b625760405162461bcd60e51b81526004018080602001828103825260238152602001806152296023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612bbb57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b612c3e336139ed565b80612c4857503330145b612c8e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8080612ccb576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612d16576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16612d4f576000612d428484613517565b9050612d4d81613c91565b505b612d5a8484846146f6565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b612db333613a01565b612e01576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a54610100900460ff16612e55576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b612eb66039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114612ef35760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603954811015613094576036600060398381548110612f1157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561308c5760006036600060398481548110612f5157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603754612f959060016146b4565b81101561305d5760398281548110612fa957fe5b600091825260209091200154603780546001600160a01b039092169183908110612fcf57fe5b6000918252602090912001546001600160a01b0316141561305557603780546000198101908110612ffc57fe5b600091825260209091200154603780546001600160a01b03909216918390811061302257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061305d565b600101612f87565b50603780548061306957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101612ef6565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561311757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116130f9575b5050935050505060405180910390a161313260396000615039565b50603a805461ff0019169055565b60405481565b60008160405160200180828051906020019060200280838360005b83811015613179578181015183820152602001613161565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6131a9336139ed565b806131b857506131b833613a01565b613204576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a54610100900460ff16613258576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6132b96039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b81146132f65760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b61330260396000615039565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061335857fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b80806133c3576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6133cc336139ed565b806133db57506133db33613a01565b613427576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b814711613474576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61347d82613c91565b6134856128dd565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156134bd573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336134e86128dd565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613521614730565b6001600160a01b0316836001600160a01b0316141561354157508061105f565b816001600160a01b038416156135d057600080600061355f876147a6565b505050935093509350508061357b57600094505050505061105f565b816135b6576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6135ca836135c4888561492f565b90614988565b93505050505b60008060006135dd6149ca565b505050935093509350508061362f576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613675576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613683826135c4868661492f565b979650505050505050565b613697336139ed565b806136a157503330145b6136e7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156137f6576137338282815181106126a457fe5b1561377e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061379557fe5b60200260200101516001600160a01b031614156137ee576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161371b565b50603a5462010000900460ff161561384d576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561393e576036600085858481811061386857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613936576001603660008686858181106138a457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060378484838181106138f957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613850565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a94929390929091906060830190849080156139ce57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116139b0575b5050935050505060405180910390a1505050565b600061105f82614b39565b6035546001600160a01b0390811691161490565b6000613a0e603454613d31565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613a5a57600080fd5b505afa158015613a6e573d6000803e3d6000fd5b505050506040513d6020811015613a8457600080fd5b505192915050565b60008151604114613ae4576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b555760405162461bcd60e51b81526004018080602001828103825260228152602001806151516022913960400191505060405180910390fd5b8060ff16601b14158015613b6d57508060ff16601c14155b15613ba95760405162461bcd60e51b81526004018080602001828103825260228152602001806151936022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613c05573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613c6d576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613c83836147a6565b509098975050505050505050565b613c99614bca565b80603d541015613cf0576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603d54613cfd90826146b4565b603d819055603f5460408051928352602083019190915280516000805160206151738339815191529281900390910190a150565b6033546000906001600160a01b0316613d91576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015613ddd57600080fd5b505afa158015613df1573d6000803e3d6000fd5b505050506040513d6020811015613e0757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015613a5a57600080fd5b801580613ed8575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613eaa57600080fd5b505afa158015613ebe573d6000803e3d6000fd5b505050506040513d6020811015613ed457600080fd5b5051155b613f135760405162461bcd60e51b81526004018080602001828103825260368152602001806152996036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613f6590849061408b565b505050565b3b151590565b600080613f7c836147a6565b509198975050505050505050565b600080613f98603b54613d31565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614003578181015183820152602001613feb565b50505050905090810190601f1680156140305780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561404d57600080fd5b505afa158015614061573d6000803e3d6000fd5b505050506040513d604081101561407757600080fd5b508051602090910151909590945092505050565b60606140e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c1a9092919063ffffffff16565b805190915015613f65578080602001905160208110156140ff57600080fd5b5051613f655760405162461bcd60e51b815260040180806020018281038252602a81526020018061524c602a913960400191505060405180910390fd5b603c819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604080546001018082558151338152602081019190915281517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff929181900390910190a1565b303b1590565b600054610100900460ff16806142355750614235614216565b80614243575060005460ff16155b61427e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff161580156142a9576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156142d457603380546001600160a01b0319166001600160a01b0384161790555b80156142e6576000805461ff00191690555b5050565b600054610100900460ff16806143035750614303614216565b80614311575060005460ff16155b61434c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614377576000805460ff1961ff0019909116610100171660011790555b81156142d457603482905580156142e6576000805461ff00191690555050565b600054610100900460ff16806143b057506143b0614216565b806143be575060005460ff16155b6143f95760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614424576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff91041661449c57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015613f65576000805461ff0019169055505050565b600054610100900460ff168061450f575061450f614216565b8061451d575060005460ff16155b6145585760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614583576000805460ff1961ff0019909116610100171660011790555b61458c82614c29565b60006145966149ca565b5050505050915050600081116145e3576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603c819055603d819055603e819055614602426201518061465a565b603f81905560408051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a150508015613f65576000805461ff0019169055505050565b6000828201838110156118ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006118ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614cd6565b6001600160a01b03821661471c576147176001600160a01b03841682614d30565b613f65565b613f656001600160a01b0383168483614e15565b600061473d603b54613d31565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561477557600080fd5b505afa158015614789573d6000803e3d6000fd5b505050506040513d602081101561479f57600080fd5b5051905090565b60606000806000806000806147bc603b54613d31565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561480857600080fd5b505afa15801561481c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561484557600080fd5b8101908080516040519392919084600160201b82111561486457600080fd5b90830190602082018581111561487957600080fd5b8251600160201b81118282018810171561489257600080fd5b82525081516020918201929091019080838360005b838110156148bf5781810151838201526020016148a7565b50505050905090810190601f1680156148ec5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261493e5750600061105f565b8282028284828161494b57fe5b04146118ce5760405162461bcd60e51b81526004018080602001828103825260218152602001806151b56021913960400191505060405180910390fd5b60006118ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614e67565b60606000806000806000806149e0603b54613d31565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614a1857600080fd5b505afa158015614a2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614a5557600080fd5b8101908080516040519392919084600160201b821115614a7457600080fd5b908301906020820185811115614a8957600080fd5b8251600160201b811182820188101715614aa257600080fd5b82525081516020918201929091019080838360005b83811015614acf578181015183820152602001614ab7565b50505050905090810190601f168015614afc5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b03821615614bc357604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015614b9057600080fd5b505afa158015614ba4573d6000803e3d6000fd5b505050506040513d6020811015614bba57600080fd5b50519050610e29565b5047610e29565b603f5442111561294757614be1426201518061465a565b603f819055603c54603d8190556040805191825260208201929092528151600080516020615173833981519152929181900390910190a1565b60606111348484600085614ecc565b600054610100900460ff1680614c425750614c42614216565b80614c50575060005460ff16155b614c8b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614cb6576000805460ff1961ff0019909116610100171660011790555b81156142d457603b82905580156142e6576000805461ff00191690555050565b60008184841115614d285760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b505050900390565b80471015614d85576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114614dd0576040519150601f19603f3d011682016040523d82523d6000602084013e614dd5565b606091505b5050905080613f655760405162461bcd60e51b815260040180806020018281038252603a815260200180615117603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613f6590849061408b565b60008183614eb65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b506000838581614ec257fe5b0495945050505050565b6060614ed785613f6a565b614f28576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614f675780518252601f199092019160209182019101614f48565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fc9576040519150601f19603f3d011682016040523d82523d6000602084013e614fce565b606091505b50915091508115614fe25791506111349050565b805115614ff25780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561177557818101518382015260200161175d565b50805460008255906000526020600020908101906119ba91906150ba565b8280548282559060005260206000209081019282156150aa579160200282015b828111156150aa5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615077565b506150b69291506150cf565b5090565b5b808211156150b657600081556001016150bb565b5b808211156150b65780546001600160a01b03191681556001016150d056fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e65416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220c8373a9a46fb86d60e45a8899de141e4978201ff8420790c529c6d9fdde9bfca64736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index 37c603d9..e7771d75 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b5060405162000c4838038062000c488339818101604052606081101561009e57600080fd5b50805160208201516040909201519091906100b8836100d5565b6100c1826101a4565b80156100cd5760358190555b505050610258565b600054610100900460ff16806100ee57506100ee610252565b806100fc575060005460ff16155b6101385760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610163576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018e57603380546001600160a01b0319166001600160a01b0384161790555b80156101a0576000805461ff00191690555b5050565b600054610100900460ff16806101bd57506101bd610252565b806101cb575060005460ff16155b6102075760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610232576000805460ff1961ff0019909116610100171660011790555b811561018e57603482905580156101a0576000805461ff00191690555050565b303b1590565b6109b280620002686000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105db565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105ea565b34801561016c57600080fd5b50610175610605565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b031661060b565b3480156101c657600080fd5b506101756107a9565b6101d8336107af565b610229576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b0387811660009081526036602052604090205416156102805760405162461bcd60e51b815260040180806020018281038252602181526020018061095c6021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c357600080fd5b505afa1580156102d7573d6000803e3d6000fd5b505050506040513d60208110156102ed57600080fd5b50516001600160a01b03161461033b576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b600061034860355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049657806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050505b841561052a57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b5050505060003411156105d1576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105cf573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b610614336107af565b610665576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b600061067260355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b505050505050565b60345490565b60006107bc60345461083a565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505192915050565b6033546000906001600160a01b031661089a576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d602081101561091057600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561080857600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a26469706673582212209b75e7596a8cacfafc8f140320e0f1ffddaba7e5dd59645a4648b7df5af7772f64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b5060405162000c4838038062000c488339818101604052606081101561009e57600080fd5b50805160208201516040909201519091906100b8836100d5565b6100c1826101a4565b80156100cd5760358190555b505050610258565b600054610100900460ff16806100ee57506100ee610252565b806100fc575060005460ff16155b6101385760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610163576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018e57603380546001600160a01b0319166001600160a01b0384161790555b80156101a0576000805461ff00191690555b5050565b600054610100900460ff16806101bd57506101bd610252565b806101cb575060005460ff16155b6102075760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610232576000805460ff1961ff0019909116610100171660011790555b811561018e57603482905580156101a0576000805461ff00191690555050565b303b1590565b6109b280620002686000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105db565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105ea565b34801561016c57600080fd5b50610175610605565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b031661060b565b3480156101c657600080fd5b506101756107a9565b6101d8336107af565b610229576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b0387811660009081526036602052604090205416156102805760405162461bcd60e51b815260040180806020018281038252602181526020018061095c6021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c357600080fd5b505afa1580156102d7573d6000803e3d6000fd5b505050506040513d60208110156102ed57600080fd5b50516001600160a01b03161461033b576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b600061034860355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049657806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050505b841561052a57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b5050505060003411156105d1576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105cf573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b610614336107af565b610665576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b600061067260355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b505050505050565b60345490565b60006107bc60345461083a565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505192915050565b6033546000906001600160a01b031661089a576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d602081101561091057600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561080857600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220a2906ac3c49284cf6c00c1f8014911dbbbca686e0f3ae5940f959591e87f175864736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { From 110f0493e86ced15ed70e16ec4fd893f5e71bb28 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Fri, 20 Nov 2020 16:54:56 +0100 Subject: [PATCH 32/66] readme: remove oraclize occurrencies --- README.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 09e5f755..f81d7ff2 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ It should be noted that this codebase makes heavy use of inheritance. ### Solidity code in the `/contracts/internals/` folder [balanceable.sol](/contracts/internals/balanceable.sol) is an inheritable contract that checks the ETH or ERC20 balance of an address. -[burner.sol](/contracts/internals/burner.sol) defines the Burner interface used for burning TKN for the cash n' burn functionality. +[burner.sol](/contracts/internals/burner.sol) defines the Burner interface used for burning TKN for the cash n' burn functionality. [bytesUtils.sol](/contracts/internals/bytesUtils.sol) includes a set of utils for parsing bytes to things like ints and addresses. @@ -134,9 +134,7 @@ It should be noted that this codebase makes heavy use of inheritance. [isValidSignatureExporter.sol](/contracts/mocks/isValidSignatureExporter.sol) used to export valid signatures for meta transaction testing. -[nonCompliantToken.sol](/contracts/mocks/nonCompliantToken.sol) a version of a non-compliant ERC20 token, used to test the SafeERC20 stuff. - -[oraclize.sol](/contracts/mocks/oraclize.sol) is a mocked out version of the oraclize, this is for testing purposes only. +[nonCompliantToken.sol](/contracts/mocks/nonCompliantToken.sol) a version of a non-compliant ERC20 token, used to test the SafeERC20 stuff. [parseIntScientific-exporter.sol](/contracts/mocks/parseIntScientificExporter.sol) is a mocked out version of a contract that pulls in the parseIntScientific contract used to parse floating points that include scientific notation out of JSON. @@ -161,7 +159,6 @@ All of the third-party code we rely on can be found in this folder. The below ta | [ENS Pubic Resolver](https://raw.githubusercontent.com/ensdomains/resolvers/797c8b63617d1bfe4d046274b58c05e991fbae76/contracts/PublicResolver.sol) | [BSD2](https://github.com/ensdomains/ens/blob/master/LICENSE) | | [ENS Registry](https://raw.githubusercontent.com/ensdomains/ens/aa30b7eae4efdb2089893b7a461c76dbbc011783/contracts/ENSRegistry.sol) | [BSD2](https://github.com/ensdomains/ens/blob/master/LICENSE) | | [strings.sol](https://github.com/Arachnid/solidity-stringutils/pull/37) | [Apache v2](https://github.com/Arachnid/solidity-stringutils/blob/master/LICENSE) | -| [oraclizeAPI](https://raw.githubusercontent.com/provable-things/ethereum-api/d02497b4d84e02a8649af3822950873d305f7659/oraclizeAPI_0.5.sol) | [MIT](https://github.com/oraclize/ethereum-api/blob/master/LICENSE) | | [gnosis MultiSig](https://github.com/gnosis/MultiSigWallet) | [GPLv3](https://github.com/gnosis/MultiSigWallet/blob/master/LICENSE) | | [zOS Upgradeability](https://github.com/OpenZeppelin/openzeppelin-sdk/blob/9baca3afb5649b6defc3a75eeb69f4930852180f/packages/lib/contracts/upgradeability/Proxy.sol) | [MIT](https://github.com/OpenZeppelin/openzeppelin-sdk/blob/9baca3afb5649b6defc3a75eeb69f4930852180f/LICENSE) | @@ -234,4 +231,4 @@ dot contracts.dot -Tpng -o ./wallet.inheritance.png ## Resources [🎮 Discord](https://discord.gg/GN6gGEP) | [🗞️Blog](https://medium.com/@Monolith) | [👽 Reddit](https://www.reddit.com/r/Monolith_Web3/) | [🕸️ Website ](https://monolith.xyz/) | [🐦 Twitter](https://twitter.com/monolith_web3) | -|---|---|---|---|---| +|---|---|---|---|---| From 331f8f422f84a029d7ab28261650fe3e61b3006c Mon Sep 17 00:00:00 2001 From: Mischa Tuffield Date: Tue, 24 Nov 2020 16:30:15 +0000 Subject: [PATCH 33/66] This fixes the broken tests by adding in the missing mocks to the build process --- build.sh | 4 +- pkg/bindings/mocks/gasBurner.go | 2 +- pkg/bindings/mocks/gasToken.go | 2 +- pkg/bindings/mocks/walletMock.go | 232 ------------------------------- 4 files changed, 5 insertions(+), 235 deletions(-) delete mode 100644 pkg/bindings/mocks/walletMock.go diff --git a/build.sh b/build.sh index c6edbc51..81fc184d 100755 --- a/build.sh +++ b/build.sh @@ -84,6 +84,8 @@ contracts=( "mocks/token/Token mocks/token.go Token mocks" "mocks/tokenWhitelistableExporter/TokenWhitelistableExporter mocks/tokenWhitelistableExporter.go TokenWhitelistableExporter mocks" "mocks/wallet/Wallet mocks/wallet.go Wallet mocks" + "mocks/gasToken/GasToken mocks/gasToken.go GasToken mocks" + "mocks/gasBurner/GasBurner mocks/gasBurner.go GasBurner mocks" "externals/ens/ENSRegistry/ENSRegistry externals/ens/ENSRegistry.go ENSRegistry ens" "externals/ens/PublicResolver/PublicResolver externals/ens/PublicResolver.go PublicResolver ens" "externals/upgradeability/UpgradeabilityProxy/UpgradeabilityProxy externals/upgradeability/UpgradeabilityProxy.go UpgradeabilityProxy upgradeability" @@ -94,4 +96,4 @@ do generate_binding "$c" done -echo "done" \ No newline at end of file +echo "done" diff --git a/pkg/bindings/mocks/gasBurner.go b/pkg/bindings/mocks/gasBurner.go index 766763b3..a0d11019 100644 --- a/pkg/bindings/mocks/gasBurner.go +++ b/pkg/bindings/mocks/gasBurner.go @@ -31,7 +31,7 @@ var ( const GasBurnerABI = "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"burn\",\"type\":\"uint256\"}],\"name\":\"burnGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dummy\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}]" // GasBurnerBin is the compiled bytecode used for deploying new contracts. -var GasBurnerBin = "0x6080604052348015600f57600080fd5b5060ab8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806332e43a111460375780634ad5d16f14603f575b600080fd5b603d6059565b005b603d60048036036020811015605357600080fd5b5035605b565bfe5b6332e43a1160e01b60005260008060046000803086f1505056fea2646970667358221220ab9b83092a8d64d01e2d8637b5ff40b00935b413ea8be9d23e20e67e2b764ae764736f6c634300060b0033" +var GasBurnerBin = "0x6080604052348015600f57600080fd5b5060ab8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806332e43a111460375780634ad5d16f14603f575b600080fd5b603d6059565b005b603d60048036036020811015605357600080fd5b5035605b565bfe5b6332e43a1160e01b60005260008060046000803086f1505056fea26469706673582212202c860f79554b7bc7d54ead648ade9fbf8058988df9ff264b1fdeb75fdbab6c5364736f6c634300060c0033" // DeployGasBurner deploys a new Ethereum contract, binding an instance of GasBurner to it. func DeployGasBurner(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GasBurner, error) { diff --git a/pkg/bindings/mocks/gasToken.go b/pkg/bindings/mocks/gasToken.go index 0718591f..33ba17b8 100644 --- a/pkg/bindings/mocks/gasToken.go +++ b/pkg/bindings/mocks/gasToken.go @@ -31,7 +31,7 @@ var ( const GasTokenABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"free\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"freeUpTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalBurned\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalMinted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // GasTokenBin is the compiled bytecode used for deploying new contracts. -var GasTokenBin = "0x608060405234801561001057600080fd5b50610675806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2309ff81161005b578063a2309ff814610109578063a9059cbb14610111578063d89135cd1461013d578063d8ccd0f31461014557610088565b806318160ddd1461008d5780636366b936146100a757806370a08231146100c4578063a0712d68146100ea575b600080fd5b610095610162565b60408051918252519081900360200190f35b610095600480360360208110156100bd57600080fd5b503561016c565b610095600480360360208110156100da57600080fd5b50356001600160a01b031661018e565b6101076004803603602081101561010057600080fd5b50356101a9565b005b61009561037e565b6101076004803603604081101561012757600080fd5b506001600160a01b038135169060200135610384565b6100956103f6565b6100956004803603602081101561015b57600080fd5b50356103fc565b6001546000540390565b60006101886101838361017e3361018e565b61041b565b6103fc565b92915050565b6001600160a01b031660009081526002602052604090205490565b600080547f766ffa233a79675b0530301caf58abcfa2eb3318585733ff60005260176009f3909152602082045b801561034957816020600080f550600182016020600080f550600282016020600080f550600382016020600080f550600482016020600080f550600582016020600080f550600682016020600080f550600782016020600080f550600882016020600080f550600982016020600080f550600a82016020600080f550600b82016020600080f550600c82016020600080f550600d82016020600080f550600e82016020600080f550600f82016020600080f550601082016020600080f550601182016020600080f550601282016020600080f550601382016020600080f550601482016020600080f550601582016020600080f550601682016020600080f550601782016020600080f550601882016020600080f550601982016020600080f550601a82016020600080f550601b82016020600080f550601c82016020600080f550601d82016020600080f550601e82016020600080f550601f82016020600080f55060209190910190600019016101d6565b50601f82165b801561036d57816020600080f550600191909101906000190161034f565b506103783383610433565b60005550565b60005481565b336000908152600260205260409020546103a4908263ffffffff61045c16565b33600090815260026020526040808220929092556001600160a01b038416815220546103d6908263ffffffff61049e16565b6001600160a01b0390921660009081526002602052604090209190915550565b60015481565b600081156104175761040e33836104f8565b61041782610521565b5090565b600081831061042a578161042c565b825b9392505050565b6001600160a01b0382166000908152600260205260409020546103d6908263ffffffff61049e16565b600061042c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506105a8565b60008282018381101561042c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600260205260409020546103d6908263ffffffff61045c16565b600154818101806001556040517fff00000000fa233a79675b0530301caf58abcfa2eb000000000000000000000081527f841da0d3b4b49d75c2a11068e21bceeb2e5d8c9e31ab7cea45c9ce114a2033dc6035820152601581015b828410156105a1578381526000806000806000605587205af15060018401935061057c565b5050505050565b600081848411156106375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105fc5781810151838201526020016105e4565b50505050905090810190601f1680156106295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fea26469706673582212209a19aaf243b6caa5d2cb30de07f2a0bf726396d9cb5a685cf78e2c2e9d8f32d864736f6c634300060b0033" +var GasTokenBin = "0x608060405234801561001057600080fd5b5061065d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2309ff81161005b578063a2309ff814610109578063a9059cbb14610111578063d89135cd1461013d578063d8ccd0f31461014557610088565b806318160ddd1461008d5780636366b936146100a757806370a08231146100c4578063a0712d68146100ea575b600080fd5b610095610162565b60408051918252519081900360200190f35b610095600480360360208110156100bd57600080fd5b503561016c565b610095600480360360208110156100da57600080fd5b50356001600160a01b031661018e565b6101076004803603602081101561010057600080fd5b50356101a9565b005b61009561037e565b6101076004803603604081101561012757600080fd5b506001600160a01b038135169060200135610384565b6100956103ea565b6100956004803603602081101561015b57600080fd5b50356103f0565b6001546000540390565b60006101886101838361017e3361018e565b61040f565b6103f0565b92915050565b6001600160a01b031660009081526002602052604090205490565b600080547f766ffa233a79675b0530301caf58abcfa2eb3318585733ff60005260176009f3909152602082045b801561034957816020600080f550600182016020600080f550600282016020600080f550600382016020600080f550600482016020600080f550600582016020600080f550600682016020600080f550600782016020600080f550600882016020600080f550600982016020600080f550600a82016020600080f550600b82016020600080f550600c82016020600080f550600d82016020600080f550600e82016020600080f550600f82016020600080f550601082016020600080f550601182016020600080f550601282016020600080f550601382016020600080f550601482016020600080f550601582016020600080f550601682016020600080f550601782016020600080f550601882016020600080f550601982016020600080f550601a82016020600080f550601b82016020600080f550601c82016020600080f550601d82016020600080f550601e82016020600080f550601f82016020600080f55060209190910190600019016101d6565b50601f82165b801561036d57816020600080f550600191909101906000190161034f565b506103783383610427565b60005550565b60005481565b3360009081526002602052604090205461039e908261044a565b33600090815260026020526040808220929092556001600160a01b038416815220546103ca908261048c565b6001600160a01b0390921660009081526002602052604090209190915550565b60015481565b6000811561040b5761040233836104e6565b61040b82610509565b5090565b600081831061041e5781610420565b825b9392505050565b6001600160a01b0382166000908152600260205260409020546103ca908261048c565b600061042083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610590565b600082820183811015610420576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600260205260409020546103ca908261044a565b600154818101806001556040517fff00000000fa233a79675b0530301caf58abcfa2eb000000000000000000000081527f841da0d3b4b49d75c2a11068e21bceeb2e5d8c9e31ab7cea45c9ce114a2033dc6035820152601581015b82841015610589578381526000806000806000605587205af150600184019350610564565b5050505050565b6000818484111561061f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105e45781810151838201526020016105cc565b50505050905090810190601f1680156106115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fea26469706673582212201748fa158d2b2af8096cdc3480876d3eba568ab01442138784ba1c3bb6a7c8a664736f6c634300060c0033" // DeployGasToken deploys a new Ethereum contract, binding an instance of GasToken to it. func DeployGasToken(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *GasToken, error) { diff --git a/pkg/bindings/mocks/walletMock.go b/pkg/bindings/mocks/walletMock.go deleted file mode 100644 index d0cfd324..00000000 --- a/pkg/bindings/mocks/walletMock.go +++ /dev/null @@ -1,232 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package mocks - -import ( - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = abi.U256 - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription -) - -// WalletMockABI is the input ABI used to generate the binding from. -const WalletMockABI = "[{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sendValue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" - -// WalletMockBin is the compiled bytecode used for deploying new contracts. -var WalletMockBin = "0x608060405234801561001057600080fd5b506101a6806100206000396000f3fe6080604052600436106100295760003560e01c806324a084df1461002b578063a9059cbb14610064575b005b34801561003757600080fd5b506100296004803603604081101561004e57600080fd5b506001600160a01b03813516906020013561009d565b34801561007057600080fd5b506100296004803603604081101561008757600080fd5b506001600160a01b03813516906020013561013b565b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146100e8576040519150601f19603f3d011682016040523d82523d6000602084013e6100ed565b606091505b5050905080610136576040805162461bcd60e51b815260206004820152601060248201526f1cd95b9915985b1d594819985a5b195960821b604482015290519081900360640190fd5b505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610136573d6000803e3d6000fdfea265627a7a723158209bf75575882e443e2c6513fa2009869a2f6288df81bb1ccd5e5c74fa7500456364736f6c63430005110032" - -// DeployWalletMock deploys a new Ethereum contract, binding an instance of WalletMock to it. -func DeployWalletMock(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *WalletMock, error) { - parsed, err := abi.JSON(strings.NewReader(WalletMockABI)) - if err != nil { - return common.Address{}, nil, nil, err - } - - address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(WalletMockBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &WalletMock{WalletMockCaller: WalletMockCaller{contract: contract}, WalletMockTransactor: WalletMockTransactor{contract: contract}, WalletMockFilterer: WalletMockFilterer{contract: contract}}, nil -} - -// WalletMock is an auto generated Go binding around an Ethereum contract. -type WalletMock struct { - WalletMockCaller // Read-only binding to the contract - WalletMockTransactor // Write-only binding to the contract - WalletMockFilterer // Log filterer for contract events -} - -// WalletMockCaller is an auto generated read-only Go binding around an Ethereum contract. -type WalletMockCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WalletMockTransactor is an auto generated write-only Go binding around an Ethereum contract. -type WalletMockTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WalletMockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type WalletMockFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// WalletMockSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type WalletMockSession struct { - Contract *WalletMock // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WalletMockCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type WalletMockCallerSession struct { - Contract *WalletMockCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// WalletMockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type WalletMockTransactorSession struct { - Contract *WalletMockTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// WalletMockRaw is an auto generated low-level Go binding around an Ethereum contract. -type WalletMockRaw struct { - Contract *WalletMock // Generic contract binding to access the raw methods on -} - -// WalletMockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type WalletMockCallerRaw struct { - Contract *WalletMockCaller // Generic read-only contract binding to access the raw methods on -} - -// WalletMockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type WalletMockTransactorRaw struct { - Contract *WalletMockTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewWalletMock creates a new instance of WalletMock, bound to a specific deployed contract. -func NewWalletMock(address common.Address, backend bind.ContractBackend) (*WalletMock, error) { - contract, err := bindWalletMock(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &WalletMock{WalletMockCaller: WalletMockCaller{contract: contract}, WalletMockTransactor: WalletMockTransactor{contract: contract}, WalletMockFilterer: WalletMockFilterer{contract: contract}}, nil -} - -// NewWalletMockCaller creates a new read-only instance of WalletMock, bound to a specific deployed contract. -func NewWalletMockCaller(address common.Address, caller bind.ContractCaller) (*WalletMockCaller, error) { - contract, err := bindWalletMock(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &WalletMockCaller{contract: contract}, nil -} - -// NewWalletMockTransactor creates a new write-only instance of WalletMock, bound to a specific deployed contract. -func NewWalletMockTransactor(address common.Address, transactor bind.ContractTransactor) (*WalletMockTransactor, error) { - contract, err := bindWalletMock(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &WalletMockTransactor{contract: contract}, nil -} - -// NewWalletMockFilterer creates a new log filterer instance of WalletMock, bound to a specific deployed contract. -func NewWalletMockFilterer(address common.Address, filterer bind.ContractFilterer) (*WalletMockFilterer, error) { - contract, err := bindWalletMock(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &WalletMockFilterer{contract: contract}, nil -} - -// bindWalletMock binds a generic wrapper to an already deployed contract. -func bindWalletMock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := abi.JSON(strings.NewReader(WalletMockABI)) - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WalletMock *WalletMockRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { - return _WalletMock.Contract.WalletMockCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WalletMock *WalletMockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WalletMock.Contract.WalletMockTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WalletMock *WalletMockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WalletMock.Contract.WalletMockTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_WalletMock *WalletMockCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { - return _WalletMock.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_WalletMock *WalletMockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _WalletMock.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_WalletMock *WalletMockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _WalletMock.Contract.contract.Transact(opts, method, params...) -} - -// SendValue is a paid mutator transaction binding the contract method 0x24a084df. -// -// Solidity: function sendValue(address _to, uint256 _amount) returns() -func (_WalletMock *WalletMockTransactor) SendValue(opts *bind.TransactOpts, _to common.Address, _amount *big.Int) (*types.Transaction, error) { - return _WalletMock.contract.Transact(opts, "sendValue", _to, _amount) -} - -// SendValue is a paid mutator transaction binding the contract method 0x24a084df. -// -// Solidity: function sendValue(address _to, uint256 _amount) returns() -func (_WalletMock *WalletMockSession) SendValue(_to common.Address, _amount *big.Int) (*types.Transaction, error) { - return _WalletMock.Contract.SendValue(&_WalletMock.TransactOpts, _to, _amount) -} - -// SendValue is a paid mutator transaction binding the contract method 0x24a084df. -// -// Solidity: function sendValue(address _to, uint256 _amount) returns() -func (_WalletMock *WalletMockTransactorSession) SendValue(_to common.Address, _amount *big.Int) (*types.Transaction, error) { - return _WalletMock.Contract.SendValue(&_WalletMock.TransactOpts, _to, _amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address _to, uint256 _amount) returns() -func (_WalletMock *WalletMockTransactor) Transfer(opts *bind.TransactOpts, _to common.Address, _amount *big.Int) (*types.Transaction, error) { - return _WalletMock.contract.Transact(opts, "transfer", _to, _amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address _to, uint256 _amount) returns() -func (_WalletMock *WalletMockSession) Transfer(_to common.Address, _amount *big.Int) (*types.Transaction, error) { - return _WalletMock.Contract.Transfer(&_WalletMock.TransactOpts, _to, _amount) -} - -// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. -// -// Solidity: function transfer(address _to, uint256 _amount) returns() -func (_WalletMock *WalletMockTransactorSession) Transfer(_to common.Address, _amount *big.Int) (*types.Transaction, error) { - return _WalletMock.Contract.Transfer(&_WalletMock.TransactOpts, _to, _amount) -} From 75cab55a78940bd0030e6214be19c361877781c0 Mon Sep 17 00:00:00 2001 From: Mischa Tuffield Date: Tue, 24 Nov 2020 23:07:15 +0000 Subject: [PATCH 34/66] This makes sure that the gastopup converts the ETH value into the stablecoin for purposes of the one spend limit --- contracts/wallet.sol | 8 +++- .../mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/wallet.go | 2 +- pkg/bindings/walletDeployer.go | 2 +- test/wallet/top_up_gas_test.go | 47 +++++++++++-------- 5 files changed, 38 insertions(+), 23 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 699f4cea..46dd7c3c 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -254,6 +254,9 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista uint256 private _pendingLimit; // The pending new limit value requested in the latest limit update submission. uint256 private _resetTimestamp; // Denotes the future timestamp when the available daily limit is due to reset again. + // @dev This initializes the daily spend limit using the stablecoin defined in the tokenWhitelist + // @param _limit is base units of the stablecoin defined in the tokenWhitelist + // @param _tokenWhitelistNode is the node that points to our tokenWhitelist function _initializeDailyLimit(uint256 _limit, bytes32 _tokenWhitelistNode) internal initializer { _initializeTokenWhitelistable(_tokenWhitelistNode); (, uint256 stablecoinMagnitude, , , , , ) = _getStablecoinInfo(); @@ -507,8 +510,10 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe function topUpGas(uint256 _amount) external isNotZero(_amount) onlyOwnerOrController { // Check contract balance is sufficient for the operation require(address(this).balance > _amount, "balance not sufficient"); + // Convert ETH amount to stablecoin value. + uint256 stablecoinValue = convertToStablecoin(address(0), _amount); // Check against the daily spent limit and update accordingly, require that the value is under remaining limit. - _enforceDailyLimit(_amount); + _enforceDailyLimit(stablecoinValue); // Then perform the transfer owner().transfer(_amount); // Emit the gas top up event. @@ -608,6 +613,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe uint256 stablecoinValue = convertToStablecoin(address(0), _value); _enforceDailyLimit(stablecoinValue); } + // Check if the destination is a Contract and it is one of our supported tokens if (address(_destination).isContract() && _isTokenAvailable(_destination)) { // to is the recipient's address and amount is the value to be transferred diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index b0ecb498..b4b6d181 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220c1c27a76a46f48473e31be46d926e14b553b3bf96bff30f5bbfe60d26bf75aff64736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220903e8c208aa5d5398da18ee404ebca3df158058bf73e38e978001fb30c3c1ab064736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index e74e7633..cd653575 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603b5534801561007957600080fd5b50615304806100896000396000f3fe60806040526004361061025c5760003560e01c8063715018a611610144578063cbd2ac68116100b6578063de212bf31161007a578063de212bf314610cd9578063e2b4ce9714610cee578063e61c51ca14610d03578063f36febda14610d2d578063f421764814610d66578063f8b2cb4f14610de15761025c565b8063cbd2ac6814610b98578063cccdc55614610bc2578063cd7958dd14610bd7578063ce0b5bd514610c85578063d251fefc14610caf5761025c565b80638da5cb5b116101085780638da5cb5b14610a2a57806390e690c714610a3f578063aaf1fc6214610a54578063b242e53414610b05578063be40ba7914610b40578063beabacc814610b555761025c565b8063715018a61461093f578063747c31d6146109545780637d73b231146109695780637fd004fa1461099a578063877337b014610a155761025c565b80633b8252fa116101dd57806347b55a9d116101a157806347b55a9d146107eb5780634d9aa248146108005780635adc02ab146108155780636137d6701461083f57806369efdfc0146108ba5780636c37a7e6146109155761025c565b80633b8252fa146105ed5780633f579f4214610614578063458d07f2146106da57806345b12efc1461070457806346efe0ed146107195761025c565b80632121dc75116102245780632121dc75146104ff57806326d05ab214610514578063294f40251461052957806332531c3c1461058e5780633a43199f146105c15761025c565b806301ffc9a714610261578063100f23fd146102a95780631127b57e146102d55780631626ba7e1461035f57806320c13b0b14610434575b600080fd5b34801561026d57600080fd5b506102956004803603602081101561028457600080fd5b50356001600160e01b031916610e14565b604080519115158252519081900360200190f35b3480156102b557600080fd5b506102d3600480360360208110156102cc57600080fd5b5035610e2e565b005b3480156102e157600080fd5b506102ea610fd5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032457818101518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036b57600080fd5b506104176004803603604081101561038257600080fd5b81359190810190604081016020820135600160201b8111156103a357600080fd5b8201836020820111156103b557600080fd5b803590602001918460018302840111600160201b831117156103d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ff6945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561044057600080fd5b506104176004803603604081101561045757600080fd5b810190602081018135600160201b81111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111600160201b831117156104a457600080fd5b919390929091602081019035600160201b8111156104c157600080fd5b8201836020820111156104d357600080fd5b803590602001918460018302840111600160201b831117156104f457600080fd5b509092509050611065565b34801561050b57600080fd5b5061029561113c565b34801561052057600080fd5b5061029561114d565b34801561053557600080fd5b5061053e611156565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057a578181015183820152602001610562565b505050509050019250505060405180910390f35b34801561059a57600080fd5b50610295600480360360208110156105b157600080fd5b50356001600160a01b03166111b8565b6102d3600480360360408110156105d757600080fd5b506001600160a01b0381351690602001356111cd565b3480156105f957600080fd5b506106026113ed565b60408051918252519081900360200190f35b34801561062057600080fd5b506102ea6004803603606081101561063757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460018302840111600160201b8311171561069957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113f3945050505050565b3480156106e657600080fd5b506102d3600480360360208110156106fd57600080fd5b50356118d5565b34801561071057600080fd5b506106026119bd565b34801561072557600080fd5b506102d36004803603606081101561073c57600080fd5b81359190810190604081016020820135600160201b81111561075d57600080fd5b82018360208201111561076f57600080fd5b803590602001918460018302840111600160201b8311171561079057600080fd5b919390929091602081019035600160201b8111156107ad57600080fd5b8201836020820111156107bf57600080fd5b803590602001918460018302840111600160201b831117156107e057600080fd5b5090925090506119db565b3480156107f757600080fd5b5061053e611d22565b34801561080c57600080fd5b50610602611d82565b34801561082157600080fd5b506102d36004803603602081101561083857600080fd5b5035611d88565b34801561084b57600080fd5b506102d36004803603602081101561086257600080fd5b810190602081018135600160201b81111561087c57600080fd5b82018360208201111561088e57600080fd5b803590602001918460208302840111600160201b831117156108af57600080fd5b50909250905061205e565b3480156108c657600080fd5b506102d3600480360360e08110156108dd57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c00135612286565b34801561092157600080fd5b506102d36004803603602081101561093857600080fd5b503561235a565b34801561094b57600080fd5b506102d3612480565b34801561096057600080fd5b5061060261257e565b34801561097557600080fd5b5061097e612584565b604080516001600160a01b039092168252519081900360200190f35b3480156109a657600080fd5b506102d3600480360360208110156109bd57600080fd5b810190602081018135600160201b8111156109d757600080fd5b8201836020820111156109e957600080fd5b803590602001918460208302840111600160201b83111715610a0a57600080fd5b509092509050612593565b348015610a2157600080fd5b506106026128d7565b348015610a3657600080fd5b5061097e6128dd565b348015610a4b57600080fd5b506102d36128ec565b348015610a6057600080fd5b506102d360048036036020811015610a7757600080fd5b810190602081018135600160201b811115610a9157600080fd5b820183602082011115610aa357600080fd5b803590602001918460018302840111600160201b83111715610ac457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612949945050505050565b348015610b1157600080fd5b506102d360048036036040811015610b2857600080fd5b506001600160a01b0381351690602001351515612a6c565b348015610b4c57600080fd5b50610295612c26565b348015610b6157600080fd5b506102d360048036036060811015610b7857600080fd5b506001600160a01b03813581169160208101359091169060400135612c35565b348015610ba457600080fd5b506102d360048036036020811015610bbb57600080fd5b5035612daa565b348015610bce57600080fd5b50610602613140565b348015610be357600080fd5b5061060260048036036020811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460208302840111600160201b83111715610c4757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613146945050505050565b348015610c9157600080fd5b506102d360048036036020811015610ca857600080fd5b50356131a0565b348015610cbb57600080fd5b5061097e60048036036020811015610cd257600080fd5b503561334b565b348015610ce557600080fd5b50610295613372565b348015610cfa57600080fd5b50610602613380565b348015610d0f57600080fd5b506102d360048036036020811015610d2657600080fd5b5035613386565b348015610d3957600080fd5b5061060260048036036040811015610d5057600080fd5b506001600160a01b038135169060200135613517565b348015610d7257600080fd5b506102d360048036036020811015610d8957600080fd5b810190602081018135600160201b811115610da357600080fd5b820183602082011115610db557600080fd5b803590602001918460208302840111600160201b83111715610dd657600080fd5b50909250905061368e565b348015610ded57600080fd5b5061060260048036036020811015610e0457600080fd5b50356001600160a01b03166139e2565b6001600160e01b031981166301ffc9a760e01b145b919050565b610e37336139ed565b80610e465750610e4633613a01565b610e92576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a5460ff16610ee1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610f446038805480602002602001604051908101604052809291908181526020018280548015610f3a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f1c575b5050505050613146565b8114610f815760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b610f8d60386000615039565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806110038484613a8c565b905061100e816139ed565b611053576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b95506110dc9450869350899150889081908401838280828437600092019190915250610ff692505050565b6001600160e01b03191614611128576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b60366020526000908152604090205460ff1681565b6111d6336139ed565b806111e057503330145b611226576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b61122f82613c77565b611275576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006112818383613517565b905061128c81613c91565b6000611299604154613d31565b90506001600160a01b03841615611332576112be6001600160a01b0385168285613e52565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b505050506113a3565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561138957600080fd5b505af115801561139d573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603e5490565b60606113fe336139ed565b8061140857503330145b61144e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff1661148857600061147b600085613517565b905061148681613c91565b505b61149a846001600160a01b0316613f6a565b80156114aa57506114aa84613f70565b1561167a576000806114bc8685613f8a565b6001600160a01b038216600090815260366020526040902054919350915060ff166114fa5760006114ed8783613517565b90506114f881613c91565b505b61150d6001600160a01b0387168561408b565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061154057fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156115d25781810151838201526020016115ba565b50505050905090810190601f1680156115ff5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561163257818101518382015260200161161a565b50505050905090810190601f16801561165f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506118ce915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106116b95780518252601f19909201916020918201910161169a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461171b576040519150601f19603f3d011682016040523d82523d6000602084013e611720565b606091505b50915091508181906117b05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561177557818101518382015260200161175d565b50505050905090810190601f1680156117a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561182c578181015183820152602001611814565b50505050905090810190601f1680156118595780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561188c578181015183820152602001611874565b50505050905090810190601f1680156118b95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6118de336139ed565b806118e857503330145b61192e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603e819055603c54811161198657603d5481101561197857603d819055603f5460408051838152602081019290925280516000805160206151738339815191529281900390910190a15b6119818161413c565b6119ba565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000603f544211156119d25750603c5461114a565b50603d5461114a565b6119e433613a01565b611a32576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b60004690506000611aa9823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061417f565b9050631626ba7e60e01b6001600160e01b031916611afd8286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ff692505050565b6001600160e01b03191614611b49576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6040548714611b8b576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611b936141d0565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611bf3576040519150601f19603f3d011682016040523d82523d6000602084013e611bf8565b606091505b5091509150818190611c4b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611cda578181015183820152602001611cc2565b50505050905090810190601f168015611d075780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b603c5490565b611d9133613a01565b611ddf576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a5460ff16611e2e576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611e8f6038805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114611ecc5760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603854811015611fb3576036600060388381548110611eea57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611fab5760016036600060388481548110611f2957fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603880546037919083908110611f6f57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611ecf565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561203657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612018575b5050935050505060405180910390a161205160386000615039565b50603a805460ff19169055565b612067336139ed565b8061207157503330145b6120b7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156120d25750603a54610100900460ff16155b612123576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff1661217c576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806121c0576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6121cc60398383615057565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d1928592859261223b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff168061229f575061229f614216565b806122ad575060005460ff16155b6122e85760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015612313576000805460ff1961ff0019909116610100171660011790555b61231c8661421c565b612325846142ea565b61232f8888614397565b61233982866144f6565b60418390558015612350576000805461ff00191690555b5050505050505050565b61236333613a01565b6123b1576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b80603e54146123f15760405162461bcd60e51b81526004018080602001828103825260258152602001806152046025913960400191505060405180910390fd5b603c5481116124315760405162461bcd60e51b81526004018080602001828103825260288152602001806150ef6028913960400191505060405180910390fd5b603d819055612443426201518061465a565b603f819055603d546040805191825260208201929092528151600080516020615173833981519152929181900390910190a16119ba603e5461413c565b612489336139ed565b6124d3576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612531576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60415490565b6033546001600160a01b031690565b61259c336139ed565b806125a657503330145b6125ec576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156126075750603a54610100900460ff16155b612658576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612774576126b18282815181106126a457fe5b60200260200101516139ed565b156126fc576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061271357fe5b60200260200101516001600160a01b0316141561276c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161268c565b50603a5462010000900460ff166127ce576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612812576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61281e60388484615057565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261288b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603b5490565b6035546001600160a01b031690565b6128f5336139ed565b61293f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6129476141d0565b565b612952336139ed565b8061295c57503330145b6129a2576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8051602080820191906000808060605b86851015612350576129c58660546146b4565b888601805160148201516034909201805193995060609190911c965090945090925090506129fe60546129f8878561465a565b9061465a565b945086851115612a45576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612a5b57506040805160208101909152600081525b612a668484836113f3565b506129b2565b612a75336139ed565b612abf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612b1d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612b625760405162461bcd60e51b81526004018080602001828103825260238152602001806152296023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612bbb57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b612c3e336139ed565b80612c4857503330145b612c8e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8080612ccb576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612d16576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16612d4f576000612d428484613517565b9050612d4d81613c91565b505b612d5a8484846146f6565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b612db333613a01565b612e01576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a54610100900460ff16612e55576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b612eb66039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114612ef35760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603954811015613094576036600060398381548110612f1157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561308c5760006036600060398481548110612f5157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603754612f959060016146b4565b81101561305d5760398281548110612fa957fe5b600091825260209091200154603780546001600160a01b039092169183908110612fcf57fe5b6000918252602090912001546001600160a01b0316141561305557603780546000198101908110612ffc57fe5b600091825260209091200154603780546001600160a01b03909216918390811061302257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061305d565b600101612f87565b50603780548061306957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101612ef6565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561311757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116130f9575b5050935050505060405180910390a161313260396000615039565b50603a805461ff0019169055565b60405481565b60008160405160200180828051906020019060200280838360005b83811015613179578181015183820152602001613161565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6131a9336139ed565b806131b857506131b833613a01565b613204576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a54610100900460ff16613258576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6132b96039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b81146132f65760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b61330260396000615039565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061335857fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b80806133c3576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6133cc336139ed565b806133db57506133db33613a01565b613427576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b814711613474576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61347d82613c91565b6134856128dd565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156134bd573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336134e86128dd565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613521614730565b6001600160a01b0316836001600160a01b0316141561354157508061105f565b816001600160a01b038416156135d057600080600061355f876147a6565b505050935093509350508061357b57600094505050505061105f565b816135b6576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6135ca836135c4888561492f565b90614988565b93505050505b60008060006135dd6149ca565b505050935093509350508061362f576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613675576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613683826135c4868661492f565b979650505050505050565b613697336139ed565b806136a157503330145b6136e7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156137f6576137338282815181106126a457fe5b1561377e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061379557fe5b60200260200101516001600160a01b031614156137ee576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161371b565b50603a5462010000900460ff161561384d576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561393e576036600085858481811061386857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613936576001603660008686858181106138a457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060378484838181106138f957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613850565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a94929390929091906060830190849080156139ce57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116139b0575b5050935050505060405180910390a1505050565b600061105f82614b39565b6035546001600160a01b0390811691161490565b6000613a0e603454613d31565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613a5a57600080fd5b505afa158015613a6e573d6000803e3d6000fd5b505050506040513d6020811015613a8457600080fd5b505192915050565b60008151604114613ae4576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b555760405162461bcd60e51b81526004018080602001828103825260228152602001806151516022913960400191505060405180910390fd5b8060ff16601b14158015613b6d57508060ff16601c14155b15613ba95760405162461bcd60e51b81526004018080602001828103825260228152602001806151936022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613c05573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613c6d576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613c83836147a6565b509098975050505050505050565b613c99614bca565b80603d541015613cf0576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603d54613cfd90826146b4565b603d819055603f5460408051928352602083019190915280516000805160206151738339815191529281900390910190a150565b6033546000906001600160a01b0316613d91576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015613ddd57600080fd5b505afa158015613df1573d6000803e3d6000fd5b505050506040513d6020811015613e0757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015613a5a57600080fd5b801580613ed8575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613eaa57600080fd5b505afa158015613ebe573d6000803e3d6000fd5b505050506040513d6020811015613ed457600080fd5b5051155b613f135760405162461bcd60e51b81526004018080602001828103825260368152602001806152996036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613f6590849061408b565b505050565b3b151590565b600080613f7c836147a6565b509198975050505050505050565b600080613f98603b54613d31565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614003578181015183820152602001613feb565b50505050905090810190601f1680156140305780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561404d57600080fd5b505afa158015614061573d6000803e3d6000fd5b505050506040513d604081101561407757600080fd5b508051602090910151909590945092505050565b60606140e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c1a9092919063ffffffff16565b805190915015613f65578080602001905160208110156140ff57600080fd5b5051613f655760405162461bcd60e51b815260040180806020018281038252602a81526020018061524c602a913960400191505060405180910390fd5b603c819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604080546001018082558151338152602081019190915281517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff929181900390910190a1565b303b1590565b600054610100900460ff16806142355750614235614216565b80614243575060005460ff16155b61427e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff161580156142a9576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156142d457603380546001600160a01b0319166001600160a01b0384161790555b80156142e6576000805461ff00191690555b5050565b600054610100900460ff16806143035750614303614216565b80614311575060005460ff16155b61434c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614377576000805460ff1961ff0019909116610100171660011790555b81156142d457603482905580156142e6576000805461ff00191690555050565b600054610100900460ff16806143b057506143b0614216565b806143be575060005460ff16155b6143f95760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614424576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff91041661449c57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015613f65576000805461ff0019169055505050565b600054610100900460ff168061450f575061450f614216565b8061451d575060005460ff16155b6145585760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614583576000805460ff1961ff0019909116610100171660011790555b61458c82614c29565b60006145966149ca565b5050505050915050600081116145e3576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603c819055603d819055603e819055614602426201518061465a565b603f81905560408051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a150508015613f65576000805461ff0019169055505050565b6000828201838110156118ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006118ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614cd6565b6001600160a01b03821661471c576147176001600160a01b03841682614d30565b613f65565b613f656001600160a01b0383168483614e15565b600061473d603b54613d31565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561477557600080fd5b505afa158015614789573d6000803e3d6000fd5b505050506040513d602081101561479f57600080fd5b5051905090565b60606000806000806000806147bc603b54613d31565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561480857600080fd5b505afa15801561481c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561484557600080fd5b8101908080516040519392919084600160201b82111561486457600080fd5b90830190602082018581111561487957600080fd5b8251600160201b81118282018810171561489257600080fd5b82525081516020918201929091019080838360005b838110156148bf5781810151838201526020016148a7565b50505050905090810190601f1680156148ec5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261493e5750600061105f565b8282028284828161494b57fe5b04146118ce5760405162461bcd60e51b81526004018080602001828103825260218152602001806151b56021913960400191505060405180910390fd5b60006118ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614e67565b60606000806000806000806149e0603b54613d31565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614a1857600080fd5b505afa158015614a2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614a5557600080fd5b8101908080516040519392919084600160201b821115614a7457600080fd5b908301906020820185811115614a8957600080fd5b8251600160201b811182820188101715614aa257600080fd5b82525081516020918201929091019080838360005b83811015614acf578181015183820152602001614ab7565b50505050905090810190601f168015614afc5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b03821615614bc357604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015614b9057600080fd5b505afa158015614ba4573d6000803e3d6000fd5b505050506040513d6020811015614bba57600080fd5b50519050610e29565b5047610e29565b603f5442111561294757614be1426201518061465a565b603f819055603c54603d8190556040805191825260208201929092528151600080516020615173833981519152929181900390910190a1565b60606111348484600085614ecc565b600054610100900460ff1680614c425750614c42614216565b80614c50575060005460ff16155b614c8b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614cb6576000805460ff1961ff0019909116610100171660011790555b81156142d457603b82905580156142e6576000805461ff00191690555050565b60008184841115614d285760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b505050900390565b80471015614d85576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114614dd0576040519150601f19603f3d011682016040523d82523d6000602084013e614dd5565b606091505b5050905080613f655760405162461bcd60e51b815260040180806020018281038252603a815260200180615117603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613f6590849061408b565b60008183614eb65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b506000838581614ec257fe5b0495945050505050565b6060614ed785613f6a565b614f28576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614f675780518252601f199092019160209182019101614f48565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fc9576040519150601f19603f3d011682016040523d82523d6000602084013e614fce565b606091505b50915091508115614fe25791506111349050565b805115614ff25780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561177557818101518382015260200161175d565b50805460008255906000526020600020908101906119ba91906150ba565b8280548282559060005260206000209081019282156150aa579160200282015b828111156150aa5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615077565b506150b69291506150cf565b5090565b5b808211156150b657600081556001016150bb565b5b808211156150b65780546001600160a01b03191681556001016150d056fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e65416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220c8373a9a46fb86d60e45a8899de141e4978201ff8420790c529c6d9fdde9bfca64736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603b5534801561007957600080fd5b50615314806100896000396000f3fe60806040526004361061025c5760003560e01c8063715018a611610144578063cbd2ac68116100b6578063de212bf31161007a578063de212bf314610cd9578063e2b4ce9714610cee578063e61c51ca14610d03578063f36febda14610d2d578063f421764814610d66578063f8b2cb4f14610de15761025c565b8063cbd2ac6814610b98578063cccdc55614610bc2578063cd7958dd14610bd7578063ce0b5bd514610c85578063d251fefc14610caf5761025c565b80638da5cb5b116101085780638da5cb5b14610a2a57806390e690c714610a3f578063aaf1fc6214610a54578063b242e53414610b05578063be40ba7914610b40578063beabacc814610b555761025c565b8063715018a61461093f578063747c31d6146109545780637d73b231146109695780637fd004fa1461099a578063877337b014610a155761025c565b80633b8252fa116101dd57806347b55a9d116101a157806347b55a9d146107eb5780634d9aa248146108005780635adc02ab146108155780636137d6701461083f57806369efdfc0146108ba5780636c37a7e6146109155761025c565b80633b8252fa146105ed5780633f579f4214610614578063458d07f2146106da57806345b12efc1461070457806346efe0ed146107195761025c565b80632121dc75116102245780632121dc75146104ff57806326d05ab214610514578063294f40251461052957806332531c3c1461058e5780633a43199f146105c15761025c565b806301ffc9a714610261578063100f23fd146102a95780631127b57e146102d55780631626ba7e1461035f57806320c13b0b14610434575b600080fd5b34801561026d57600080fd5b506102956004803603602081101561028457600080fd5b50356001600160e01b031916610e14565b604080519115158252519081900360200190f35b3480156102b557600080fd5b506102d3600480360360208110156102cc57600080fd5b5035610e2e565b005b3480156102e157600080fd5b506102ea610fd5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032457818101518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036b57600080fd5b506104176004803603604081101561038257600080fd5b81359190810190604081016020820135600160201b8111156103a357600080fd5b8201836020820111156103b557600080fd5b803590602001918460018302840111600160201b831117156103d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ff6945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561044057600080fd5b506104176004803603604081101561045757600080fd5b810190602081018135600160201b81111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111600160201b831117156104a457600080fd5b919390929091602081019035600160201b8111156104c157600080fd5b8201836020820111156104d357600080fd5b803590602001918460018302840111600160201b831117156104f457600080fd5b509092509050611065565b34801561050b57600080fd5b5061029561113c565b34801561052057600080fd5b5061029561114d565b34801561053557600080fd5b5061053e611156565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057a578181015183820152602001610562565b505050509050019250505060405180910390f35b34801561059a57600080fd5b50610295600480360360208110156105b157600080fd5b50356001600160a01b03166111b8565b6102d3600480360360408110156105d757600080fd5b506001600160a01b0381351690602001356111cd565b3480156105f957600080fd5b506106026113ed565b60408051918252519081900360200190f35b34801561062057600080fd5b506102ea6004803603606081101561063757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460018302840111600160201b8311171561069957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113f3945050505050565b3480156106e657600080fd5b506102d3600480360360208110156106fd57600080fd5b50356118d5565b34801561071057600080fd5b506106026119bd565b34801561072557600080fd5b506102d36004803603606081101561073c57600080fd5b81359190810190604081016020820135600160201b81111561075d57600080fd5b82018360208201111561076f57600080fd5b803590602001918460018302840111600160201b8311171561079057600080fd5b919390929091602081019035600160201b8111156107ad57600080fd5b8201836020820111156107bf57600080fd5b803590602001918460018302840111600160201b831117156107e057600080fd5b5090925090506119db565b3480156107f757600080fd5b5061053e611d22565b34801561080c57600080fd5b50610602611d82565b34801561082157600080fd5b506102d36004803603602081101561083857600080fd5b5035611d88565b34801561084b57600080fd5b506102d36004803603602081101561086257600080fd5b810190602081018135600160201b81111561087c57600080fd5b82018360208201111561088e57600080fd5b803590602001918460208302840111600160201b831117156108af57600080fd5b50909250905061205e565b3480156108c657600080fd5b506102d3600480360360e08110156108dd57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c00135612286565b34801561092157600080fd5b506102d36004803603602081101561093857600080fd5b503561235a565b34801561094b57600080fd5b506102d3612480565b34801561096057600080fd5b5061060261257e565b34801561097557600080fd5b5061097e612584565b604080516001600160a01b039092168252519081900360200190f35b3480156109a657600080fd5b506102d3600480360360208110156109bd57600080fd5b810190602081018135600160201b8111156109d757600080fd5b8201836020820111156109e957600080fd5b803590602001918460208302840111600160201b83111715610a0a57600080fd5b509092509050612593565b348015610a2157600080fd5b506106026128d7565b348015610a3657600080fd5b5061097e6128dd565b348015610a4b57600080fd5b506102d36128ec565b348015610a6057600080fd5b506102d360048036036020811015610a7757600080fd5b810190602081018135600160201b811115610a9157600080fd5b820183602082011115610aa357600080fd5b803590602001918460018302840111600160201b83111715610ac457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612949945050505050565b348015610b1157600080fd5b506102d360048036036040811015610b2857600080fd5b506001600160a01b0381351690602001351515612a6c565b348015610b4c57600080fd5b50610295612c26565b348015610b6157600080fd5b506102d360048036036060811015610b7857600080fd5b506001600160a01b03813581169160208101359091169060400135612c35565b348015610ba457600080fd5b506102d360048036036020811015610bbb57600080fd5b5035612daa565b348015610bce57600080fd5b50610602613140565b348015610be357600080fd5b5061060260048036036020811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460208302840111600160201b83111715610c4757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613146945050505050565b348015610c9157600080fd5b506102d360048036036020811015610ca857600080fd5b50356131a0565b348015610cbb57600080fd5b5061097e60048036036020811015610cd257600080fd5b503561334b565b348015610ce557600080fd5b50610295613372565b348015610cfa57600080fd5b50610602613380565b348015610d0f57600080fd5b506102d360048036036020811015610d2657600080fd5b5035613386565b348015610d3957600080fd5b5061060260048036036040811015610d5057600080fd5b506001600160a01b038135169060200135613527565b348015610d7257600080fd5b506102d360048036036020811015610d8957600080fd5b810190602081018135600160201b811115610da357600080fd5b820183602082011115610db557600080fd5b803590602001918460208302840111600160201b83111715610dd657600080fd5b50909250905061369e565b348015610ded57600080fd5b5061060260048036036020811015610e0457600080fd5b50356001600160a01b03166139f2565b6001600160e01b031981166301ffc9a760e01b145b919050565b610e37336139fd565b80610e465750610e4633613a11565b610e92576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a5460ff16610ee1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610f446038805480602002602001604051908101604052809291908181526020018280548015610f3a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f1c575b5050505050613146565b8114610f815760405162461bcd60e51b81526004018080602001828103825260238152602001806152866023913960400191505060405180910390fd5b610f8d60386000615049565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806110038484613a9c565b905061100e816139fd565b611053576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b95506110dc9450869350899150889081908401838280828437600092019190915250610ff692505050565b6001600160e01b03191614611128576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b60366020526000908152604090205460ff1681565b6111d6336139fd565b806111e057503330145b611226576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b61122f82613c87565b611275576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006112818383613527565b905061128c81613ca1565b6000611299604154613d41565b90506001600160a01b03841615611332576112be6001600160a01b0385168285613e62565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b505050506113a3565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561138957600080fd5b505af115801561139d573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603e5490565b60606113fe336139fd565b8061140857503330145b61144e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff1661148857600061147b600085613527565b905061148681613ca1565b505b61149a846001600160a01b0316613f7a565b80156114aa57506114aa84613f80565b1561167a576000806114bc8685613f9a565b6001600160a01b038216600090815260366020526040902054919350915060ff166114fa5760006114ed8783613527565b90506114f881613ca1565b505b61150d6001600160a01b0387168561409b565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061154057fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156115d25781810151838201526020016115ba565b50505050905090810190601f1680156115ff5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561163257818101518382015260200161161a565b50505050905090810190601f16801561165f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506118ce915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106116b95780518252601f19909201916020918201910161169a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461171b576040519150601f19603f3d011682016040523d82523d6000602084013e611720565b606091505b50915091508181906117b05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561177557818101518382015260200161175d565b50505050905090810190601f1680156117a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561182c578181015183820152602001611814565b50505050905090810190601f1680156118595780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561188c578181015183820152602001611874565b50505050905090810190601f1680156118b95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6118de336139fd565b806118e857503330145b61192e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603e819055603c54811161198657603d5481101561197857603d819055603f5460408051838152602081019290925280516000805160206151838339815191529281900390910190a15b6119818161414c565b6119ba565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000603f544211156119d25750603c5461114a565b50603d5461114a565b6119e433613a11565b611a32576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b60004690506000611aa9823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061418f565b9050631626ba7e60e01b6001600160e01b031916611afd8286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ff692505050565b6001600160e01b03191614611b49576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6040548714611b8b576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611b936141e0565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611bf3576040519150601f19603f3d011682016040523d82523d6000602084013e611bf8565b606091505b5091509150818190611c4b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611cda578181015183820152602001611cc2565b50505050905090810190601f168015611d075780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b603c5490565b611d9133613a11565b611ddf576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a5460ff16611e2e576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611e8f6038805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114611ecc5760405162461bcd60e51b81526004018080602001828103825260238152602001806152866023913960400191505060405180910390fd5b60005b603854811015611fb3576036600060388381548110611eea57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611fab5760016036600060388481548110611f2957fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603880546037919083908110611f6f57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611ecf565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561203657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612018575b5050935050505060405180910390a161205160386000615049565b50603a805460ff19169055565b612067336139fd565b8061207157503330145b6120b7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156120d25750603a54610100900460ff16155b612123576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff1661217c576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806121c0576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6121cc60398383615067565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d1928592859261223b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff168061229f575061229f614226565b806122ad575060005460ff16155b6122e85760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015612313576000805460ff1961ff0019909116610100171660011790555b61231c8661422c565b612325846142fa565b61232f88886143a7565b6123398286614506565b60418390558015612350576000805461ff00191690555b5050505050505050565b61236333613a11565b6123b1576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b80603e54146123f15760405162461bcd60e51b81526004018080602001828103825260258152602001806152146025913960400191505060405180910390fd5b603c5481116124315760405162461bcd60e51b81526004018080602001828103825260288152602001806150ff6028913960400191505060405180910390fd5b603d819055612443426201518061466a565b603f819055603d546040805191825260208201929092528151600080516020615183833981519152929181900390910190a16119ba603e5461414c565b612489336139fd565b6124d3576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612531576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60415490565b6033546001600160a01b031690565b61259c336139fd565b806125a657503330145b6125ec576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156126075750603a54610100900460ff16155b612658576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612774576126b18282815181106126a457fe5b60200260200101516139fd565b156126fc576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061271357fe5b60200260200101516001600160a01b0316141561276c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161268c565b50603a5462010000900460ff166127ce576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612812576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61281e60388484615067565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261288b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603b5490565b6035546001600160a01b031690565b6128f5336139fd565b61293f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6129476141e0565b565b612952336139fd565b8061295c57503330145b6129a2576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8051602080820191906000808060605b86851015612350576129c58660546146c4565b888601805160148201516034909201805193995060609190911c965090945090925090506129fe60546129f8878561466a565b9061466a565b945086851115612a45576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612a5b57506040805160208101909152600081525b612a668484836113f3565b506129b2565b612a75336139fd565b612abf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612b1d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612b625760405162461bcd60e51b81526004018080602001828103825260238152602001806152396023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612bbb57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b612c3e336139fd565b80612c4857503330145b612c8e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8080612ccb576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612d16576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16612d4f576000612d428484613527565b9050612d4d81613ca1565b505b612d5a848484614706565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b612db333613a11565b612e01576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a54610100900460ff16612e55576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b612eb66039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114612ef35760405162461bcd60e51b81526004018080602001828103825260238152602001806152866023913960400191505060405180910390fd5b60005b603954811015613094576036600060398381548110612f1157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561308c5760006036600060398481548110612f5157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603754612f959060016146c4565b81101561305d5760398281548110612fa957fe5b600091825260209091200154603780546001600160a01b039092169183908110612fcf57fe5b6000918252602090912001546001600160a01b0316141561305557603780546000198101908110612ffc57fe5b600091825260209091200154603780546001600160a01b03909216918390811061302257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061305d565b600101612f87565b50603780548061306957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101612ef6565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561311757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116130f9575b5050935050505060405180910390a161313260396000615049565b50603a805461ff0019169055565b60405481565b60008160405160200180828051906020019060200280838360005b83811015613179578181015183820152602001613161565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6131a9336139fd565b806131b857506131b833613a11565b613204576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a54610100900460ff16613258576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6132b96039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b81146132f65760405162461bcd60e51b81526004018080602001828103825260238152602001806152866023913960400191505060405180910390fd5b61330260396000615049565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061335857fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b80806133c3576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6133cc336139fd565b806133db57506133db33613a11565b613427576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b814711613474576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b6000613481600084613527565b905061348c81613ca1565b6134946128dd565b6001600160a01b03166108fc849081150290604051600060405180830381858888f193505050501580156134cc573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336134f76128dd565b604080516001600160a01b03938416815291909216602082015280820186905290519081900360600190a1505050565b6000613531614740565b6001600160a01b0316836001600160a01b0316141561355157508061105f565b816001600160a01b038416156135e057600080600061356f876147b6565b505050935093509350508061358b57600094505050505061105f565b816135c6576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6135da836135d4888561493f565b90614998565b93505050505b60008060006135ed6149da565b505050935093509350508061363f576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613685576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613693826135d4868661493f565b979650505050505050565b6136a7336139fd565b806136b157503330145b6136f7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613806576137438282815181106126a457fe5b1561378e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106137a557fe5b60200260200101516001600160a01b031614156137fe576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161372b565b50603a5462010000900460ff161561385d576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561394e576036600085858481811061387857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613946576001603660008686858181106138b457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550603784848381811061390957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613860565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a94929390929091906060830190849080156139de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116139c0575b5050935050505060405180910390a1505050565b600061105f82614b49565b6035546001600160a01b0390811691161490565b6000613a1e603454613d41565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613a6a57600080fd5b505afa158015613a7e573d6000803e3d6000fd5b505050506040513d6020811015613a9457600080fd5b505192915050565b60008151604114613af4576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b655760405162461bcd60e51b81526004018080602001828103825260228152602001806151616022913960400191505060405180910390fd5b8060ff16601b14158015613b7d57508060ff16601c14155b15613bb95760405162461bcd60e51b81526004018080602001828103825260228152602001806151a36022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613c15573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613c7d576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613c93836147b6565b509098975050505050505050565b613ca9614bda565b80603d541015613d00576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603d54613d0d90826146c4565b603d819055603f5460408051928352602083019190915280516000805160206151838339815191529281900390910190a150565b6033546000906001600160a01b0316613da1576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015613ded57600080fd5b505afa158015613e01573d6000803e3d6000fd5b505050506040513d6020811015613e1757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015613a6a57600080fd5b801580613ee8575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613eba57600080fd5b505afa158015613ece573d6000803e3d6000fd5b505050506040513d6020811015613ee457600080fd5b5051155b613f235760405162461bcd60e51b81526004018080602001828103825260368152602001806152a96036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613f7590849061409b565b505050565b3b151590565b600080613f8c836147b6565b509198975050505050505050565b600080613fa8603b54613d41565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614013578181015183820152602001613ffb565b50505050905090810190601f1680156140405780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561405d57600080fd5b505afa158015614071573d6000803e3d6000fd5b505050506040513d604081101561408757600080fd5b508051602090910151909590945092505050565b60606140f0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c2a9092919063ffffffff16565b805190915015613f755780806020019051602081101561410f57600080fd5b5051613f755760405162461bcd60e51b815260040180806020018281038252602a81526020018061525c602a913960400191505060405180910390fd5b603c819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604080546001018082558151338152602081019190915281517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff929181900390910190a1565b303b1590565b600054610100900460ff16806142455750614245614226565b80614253575060005460ff16155b61428e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff161580156142b9576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156142e457603380546001600160a01b0319166001600160a01b0384161790555b80156142f6576000805461ff00191690555b5050565b600054610100900460ff16806143135750614313614226565b80614321575060005460ff16155b61435c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015614387576000805460ff1961ff0019909116610100171660011790555b81156142e457603482905580156142f6576000805461ff00191690555050565b600054610100900460ff16806143c057506143c0614226565b806143ce575060005460ff16155b6144095760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015614434576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff9104166144ac57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015613f75576000805461ff0019169055505050565b600054610100900460ff168061451f575061451f614226565b8061452d575060005460ff16155b6145685760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015614593576000805460ff1961ff0019909116610100171660011790555b61459c82614c39565b60006145a66149da565b5050505050915050600081116145f3576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603c819055603d819055603e819055614612426201518061466a565b603f81905560408051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a150508015613f75576000805461ff0019169055505050565b6000828201838110156118ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006118ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614ce6565b6001600160a01b03821661472c576147276001600160a01b03841682614d40565b613f75565b613f756001600160a01b0383168483614e25565b600061474d603b54613d41565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561478557600080fd5b505afa158015614799573d6000803e3d6000fd5b505050506040513d60208110156147af57600080fd5b5051905090565b60606000806000806000806147cc603b54613d41565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561481857600080fd5b505afa15801561482c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561485557600080fd5b8101908080516040519392919084600160201b82111561487457600080fd5b90830190602082018581111561488957600080fd5b8251600160201b8111828201881017156148a257600080fd5b82525081516020918201929091019080838360005b838110156148cf5781810151838201526020016148b7565b50505050905090810190601f1680156148fc5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261494e5750600061105f565b8282028284828161495b57fe5b04146118ce5760405162461bcd60e51b81526004018080602001828103825260218152602001806151c56021913960400191505060405180910390fd5b60006118ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614e77565b60606000806000806000806149f0603b54613d41565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614a2857600080fd5b505afa158015614a3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614a6557600080fd5b8101908080516040519392919084600160201b821115614a8457600080fd5b908301906020820185811115614a9957600080fd5b8251600160201b811182820188101715614ab257600080fd5b82525081516020918201929091019080838360005b83811015614adf578181015183820152602001614ac7565b50505050905090810190601f168015614b0c5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b03821615614bd357604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015614ba057600080fd5b505afa158015614bb4573d6000803e3d6000fd5b505050506040513d6020811015614bca57600080fd5b50519050610e29565b5047610e29565b603f5442111561294757614bf1426201518061466a565b603f819055603c54603d8190556040805191825260208201929092528151600080516020615183833981519152929181900390910190a1565b60606111348484600085614edc565b600054610100900460ff1680614c525750614c52614226565b80614c60575060005460ff16155b614c9b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015614cc6576000805460ff1961ff0019909116610100171660011790555b81156142e457603b82905580156142f6576000805461ff00191690555050565b60008184841115614d385760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b505050900390565b80471015614d95576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114614de0576040519150601f19603f3d011682016040523d82523d6000602084013e614de5565b606091505b5050905080613f755760405162461bcd60e51b815260040180806020018281038252603a815260200180615127603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613f7590849061409b565b60008183614ec65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b506000838581614ed257fe5b0495945050505050565b6060614ee785613f7a565b614f38576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614f775780518252601f199092019160209182019101614f58565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fd9576040519150601f19603f3d011682016040523d82523d6000602084013e614fde565b606091505b50915091508115614ff25791506111349050565b8051156150025780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561177557818101518382015260200161175d565b50805460008255906000526020600020908101906119ba91906150ca565b8280548282559060005260206000209081019282156150ba579160200282015b828111156150ba5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615087565b506150c69291506150df565b5090565b5b808211156150c657600081556001016150cb565b5b808211156150c65780546001600160a01b03191681556001016150e056fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e65416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220cd3f3f2f04c410346cfb46779ba9e6dbbca54530272bb4a6a1c29cc5561fdb2d64736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index e7771d75..d077d18d 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b5060405162000c4838038062000c488339818101604052606081101561009e57600080fd5b50805160208201516040909201519091906100b8836100d5565b6100c1826101a4565b80156100cd5760358190555b505050610258565b600054610100900460ff16806100ee57506100ee610252565b806100fc575060005460ff16155b6101385760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610163576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018e57603380546001600160a01b0319166001600160a01b0384161790555b80156101a0576000805461ff00191690555b5050565b600054610100900460ff16806101bd57506101bd610252565b806101cb575060005460ff16155b6102075760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610232576000805460ff1961ff0019909116610100171660011790555b811561018e57603482905580156101a0576000805461ff00191690555050565b303b1590565b6109b280620002686000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105db565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105ea565b34801561016c57600080fd5b50610175610605565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b031661060b565b3480156101c657600080fd5b506101756107a9565b6101d8336107af565b610229576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b0387811660009081526036602052604090205416156102805760405162461bcd60e51b815260040180806020018281038252602181526020018061095c6021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c357600080fd5b505afa1580156102d7573d6000803e3d6000fd5b505050506040513d60208110156102ed57600080fd5b50516001600160a01b03161461033b576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b600061034860355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049657806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050505b841561052a57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b5050505060003411156105d1576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105cf573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b610614336107af565b610665576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b600061067260355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b505050505050565b60345490565b60006107bc60345461083a565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505192915050565b6033546000906001600160a01b031661089a576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d602081101561091057600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561080857600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220a2906ac3c49284cf6c00c1f8014911dbbbca686e0f3ae5940f959591e87f175864736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b5060405162000c4838038062000c488339818101604052606081101561009e57600080fd5b50805160208201516040909201519091906100b8836100d5565b6100c1826101a4565b80156100cd5760358190555b505050610258565b600054610100900460ff16806100ee57506100ee610252565b806100fc575060005460ff16155b6101385760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610163576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018e57603380546001600160a01b0319166001600160a01b0384161790555b80156101a0576000805461ff00191690555b5050565b600054610100900460ff16806101bd57506101bd610252565b806101cb575060005460ff16155b6102075760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610232576000805460ff1961ff0019909116610100171660011790555b811561018e57603482905580156101a0576000805461ff00191690555050565b303b1590565b6109b280620002686000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105db565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105ea565b34801561016c57600080fd5b50610175610605565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b031661060b565b3480156101c657600080fd5b506101756107a9565b6101d8336107af565b610229576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b0387811660009081526036602052604090205416156102805760405162461bcd60e51b815260040180806020018281038252602181526020018061095c6021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c357600080fd5b505afa1580156102d7573d6000803e3d6000fd5b505050506040513d60208110156102ed57600080fd5b50516001600160a01b03161461033b576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b600061034860355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049657806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050505b841561052a57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b5050505060003411156105d1576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105cf573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b610614336107af565b610665576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b600061067260355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b505050505050565b60345490565b60006107bc60345461083a565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505192915050565b6033546000906001600160a01b031661089a576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d602081101561091057600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561080857600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a264697066735822122046c4443ba0da307436c038ecadf94ec6465cc57e9d473b566353c491a26fc6f064736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { diff --git a/test/wallet/top_up_gas_test.go b/test/wallet/top_up_gas_test.go index a904bf1d..741d5c36 100644 --- a/test/wallet/top_up_gas_test.go +++ b/test/wallet/top_up_gas_test.go @@ -16,8 +16,16 @@ var _ = Describe("topUpGas", func() { Context("when the wallet has enough ETH", func() { BeforeEach(func() { - BankAccount.MustTransfer(Backend, WalletProxyAddress, EthToWei(10)) - tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), FinneyToWei(500)) + BankAccount.MustTransfer(Backend, WalletProxyAddress, EthToWei(200)) + BankAccount.MustTransfer(Backend, ControllerAdmin.Address(), EthToWei(1)) + + // exchange rate of 1 DAI for 1 ETH configured here + tx, err := TokenWhitelist.UpdateTokenRate(ControllerAdmin.TransactOpts(), StablecoinAddress, EthToWei(1), big.NewInt(20180913153211)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + + tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(100)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -38,7 +46,7 @@ var _ = Describe("topUpGas", func() { Context("When called by the wallet controller and is lower than top up limit", func() { BeforeEach(func() { - tx, err = WalletProxy.TopUpGas(caller.TransactOpts(ethertest.WithGasLimit(81000)), FinneyToWei(1)) + tx, err = WalletProxy.TopUpGas(caller.TransactOpts(), FinneyToWei(1)) Backend.Commit() }) @@ -53,7 +61,7 @@ var _ = Describe("topUpGas", func() { It("should top up the gas succesfully", func() { b, e := Backend.BalanceAt(context.Background(), WalletProxyAddress, nil) Expect(e).ToNot(HaveOccurred()) - newBalance := new(big.Int).Sub(EthToWei(10), FinneyToWei(1)) + newBalance := new(big.Int).Sub(EthToWei(200), FinneyToWei(1)) Expect(b.String()).To(Equal(newBalance.String())) ownerBalance.Add(ownerBalance, FinneyToWei(1)) Expect(Owner.Balance(Backend).String()).To(Equal(ownerBalance.String())) @@ -80,20 +88,20 @@ var _ = Describe("topUpGas", func() { It("should NOT top up the gas", func() { b, e := Backend.BalanceAt(context.Background(), WalletProxyAddress, nil) Expect(e).ToNot(HaveOccurred()) - Expect(b.String()).To(Equal(EthToWei(10).String())) //Wallet address has initially 10 ETH + Expect(b.String()).To(Equal(EthToWei(200).String())) //Wallet address has initially 200 ETH Expect(Owner.Balance(Backend).String()).To(Equal(ownerBalance.String())) }) }) - Context("When daily limit has been exausted", func() { + Context("When daily limit has been exhausted", func() { BeforeEach(func() { caller = Controller BankAccount.MustTransfer(Backend, Controller.Address(), EthToWei(1)) }) BeforeEach(func() { - tx, err = WalletProxy.TopUpGas(caller.TransactOpts(ethertest.WithGasLimit(81000)), FinneyToWei(500)) + tx, err = WalletProxy.TopUpGas(caller.TransactOpts(), FinneyToWei(500)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -133,7 +141,7 @@ var _ = Describe("topUpGas", func() { b, e := Backend.BalanceAt(context.Background(), WalletProxyAddress, nil) Expect(e).ToNot(HaveOccurred()) - newBalance := new(big.Int).Sub(EthToWei(10), FinneyToWei(501)) //Wallet address has initially 10 ETH + newBalance := new(big.Int).Sub(EthToWei(200), FinneyToWei(501)) //Wallet address has initially 200 ETH Expect(b.String()).To(Equal(newBalance.String())) ownerBalance.Add(ownerBalance, FinneyToWei(501)) Expect(Owner.Balance(Backend).String()).To(Equal(ownerBalance.String())) @@ -163,10 +171,10 @@ var _ = Describe("topUpGas", func() { txCost = new(big.Int).Mul(tx.GasPrice(), big.NewInt(int64(r.GasUsed))) }) - It("should top up succesfully", func() { + It("should top up successfully", func() { b, e := Backend.BalanceAt(context.Background(), WalletProxyAddress, nil) Expect(e).ToNot(HaveOccurred()) - newBalance := new(big.Int).Sub(EthToWei(10), FinneyToWei(500)) //Wallet address has initially 10 ETH + newBalance := new(big.Int).Sub(EthToWei(200), FinneyToWei(500)) //Wallet address has initially 200 ETH Expect(b.String()).To(Equal(newBalance.String())) ownerBalance.Add(ownerBalance, FinneyToWei(500)) ownerBalance.Sub(ownerBalance, txCost) //subtract the tx cost @@ -178,7 +186,7 @@ var _ = Describe("topUpGas", func() { Context("When the value is above top up limit", func() { BeforeEach(func() { - tx, err = WalletProxy.TopUpGas(caller.TransactOpts(ethertest.WithGasLimit(81000)), FinneyToWei(800)) + tx, err = WalletProxy.TopUpGas(caller.TransactOpts(ethertest.WithGasLimit(81000)), EthToWei(800)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) @@ -190,26 +198,27 @@ var _ = Describe("topUpGas", func() { It("should NOT top up", func() { b, e := Backend.BalanceAt(context.Background(), WalletProxyAddress, nil) Expect(e).ToNot(HaveOccurred()) - Expect(b.String()).To(Equal(EthToWei(10).String())) //Wallet address has initially 10 ETH - ownerBalance.Sub(ownerBalance, txCost) //subtract the tx cost + Expect(b.String()).To(Equal(EthToWei(200).String())) //Wallet address has initially 200 ETH + ownerBalance.Sub(ownerBalance, txCost) //subtract the tx cost Expect(Owner.Balance(Backend).String()).To(Equal(ownerBalance.String())) }) }) - Context("When daily limit has been exausted", func() { + Context("When daily limit has been exhausted", func() { BeforeEach(func() { - tx, err = WalletProxy.TopUpGas(caller.TransactOpts(ethertest.WithGasLimit(81000)), FinneyToWei(500)) + tx, err = WalletProxy.TopUpGas(caller.TransactOpts(), EthToWei(100)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) r, err := Backend.TransactionReceipt(context.Background(), tx.Hash()) Expect(err).ToNot(HaveOccurred()) txCost = new(big.Int).Mul(tx.GasPrice(), big.NewInt(int64(r.GasUsed))) }) BeforeEach(func() { - tx, err = WalletProxy.TopUpGas(caller.TransactOpts(ethertest.WithGasLimit(165000)), FinneyToWei(1)) + tx, err = WalletProxy.TopUpGas(caller.TransactOpts(ethertest.WithGasLimit(1000000)), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) @@ -226,7 +235,7 @@ var _ = Describe("topUpGas", func() { }) BeforeEach(func() { - tx, err = WalletProxy.TopUpGas(caller.TransactOpts(ethertest.WithGasLimit(165000)), FinneyToWei(1)) + tx, err = WalletProxy.TopUpGas(caller.TransactOpts(), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -239,9 +248,9 @@ var _ = Describe("topUpGas", func() { It("should top up only the top up limit of the gas", func() { b, e := Backend.BalanceAt(context.Background(), WalletProxyAddress, nil) Expect(e).ToNot(HaveOccurred()) - newBalance := new(big.Int).Sub(EthToWei(10), FinneyToWei(501)) //Wallet address has initially 10 ETH + newBalance := new(big.Int).Sub(EthToWei(100), EthToWei(1)) //Wallet address has initially 10 ETH Expect(b.String()).To(Equal(newBalance.String())) - ownerBalance.Add(ownerBalance, FinneyToWei(501)) + ownerBalance.Add(ownerBalance, EthToWei(101)) ownerBalance.Sub(ownerBalance, txCost) //subtract the tx cost Expect(Owner.Balance(Backend).String()).To(Equal(ownerBalance.String())) }) From 0c53f937e7fe3bd820927053020ffeb1212cef42 Mon Sep 17 00:00:00 2001 From: Mischa Tuffield Date: Tue, 24 Nov 2020 23:32:09 +0000 Subject: [PATCH 35/66] This removes from code duplication, and moves the convertStablecoint method to the dailylimit --- contracts/wallet.sol | 102 +++++++++--------- .../mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/wallet.go | 2 +- pkg/bindings/walletDeployer.go | 2 +- 4 files changed, 51 insertions(+), 57 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 46dd7c3c..4fdaafce 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -324,11 +324,14 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista } /// @dev Use up amount within the daily limit. Will fail if amount is larger than available limit. - function _enforceDailyLimit(uint256 _amount) internal { + function _enforceDailyLimit(address _asset, uint256 _amount) internal { + // Convert token amount to stablecoin value. + uint256 stablecoinValue = convertToStablecoin(_asset, _amount); + // Account for the limit daily reset. _updateAvailableDailyLimit(); - require(_available >= _amount, "available smaller than amount"); - _available = _available.sub(_amount); + require(_available >= stablecoinValue, "available smaller than amount"); + _available = _available.sub(stablecoinValue); emit UpdatedAvailableDailyLimit(_available, _resetTimestamp); } @@ -350,6 +353,42 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista emit UpdatedAvailableDailyLimit(_available, _resetTimestamp); } } + + /// @dev Convert ether or ERC20 token amount to the corresponding stablecoin amount. + /// @param _token ERC20 token contract address. + /// @param _amount amount of token in base units. + /// @return the equivalent amount in stablecoin base units & 0 if the token is not available. + function convertToStablecoin(address _token, uint256 _amount) public view returns (uint256) { + // avoid the unnecessary calculations if the token to be loaded is the stablecoin itself + if (_token == _stablecoin()) { + return _amount; + } + + uint256 amountToSend = _amount; + + // convert token amount to ETH first (0x0 represents ether) + if (_token != address(0)) { + // Store the token in memory to save map entry lookup gas. + (, uint256 magnitude, uint256 rate, bool available, , , ) = _getTokenInfo(_token); + + // if the token does NOT exist in the whitelist then return 0 + if (!available) { + return 0; + } + // if it exists then require that its rate is not zero. + require(rate != 0, "rate=0"); + // Safely convert the token amount to ether based on the exchange rate. + amountToSend = _amount.mul(rate).div(magnitude); + } + // _amountToSend now is in ether + // Get the stablecoin's magnitude and its current rate. + (, uint256 stablecoinMagnitude, uint256 stablecoinRate, bool stablecoinAvailable, , , ) = _getStablecoinInfo(); + // Check if the stablecoin rate is set. + require(stablecoinAvailable, "token not available"); + require(stablecoinRate != 0, "stablecoin rate=0"); + // Safely convert the token amount to stablecoin based on its exchange rate and the stablecoin exchange rate. + return amountToSend.mul(stablecoinMagnitude).div(stablecoinRate); + } } /// @title Asset wallet with extra security features, gas top up management and card integration. @@ -484,10 +523,8 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe function loadTokenCard(address _asset, uint256 _amount) external payable onlyOwnerOrSelf { // check if token is allowed to be used for loading the card require(_isTokenLoadable(_asset), "token not loadable"); - // Convert token amount to stablecoin value. - uint256 stablecoinValue = convertToStablecoin(_asset, _amount); // Check against the daily spent limit and update accordingly, require that the value is under remaining limit. - _enforceDailyLimit(stablecoinValue); + _enforceDailyLimit(_asset, _amount); // Get the TKN licenceAddress from ENS address licenceAddress = _ensResolve(_licenceNode); if (_asset != address(0)) { @@ -510,10 +547,8 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe function topUpGas(uint256 _amount) external isNotZero(_amount) onlyOwnerOrController { // Check contract balance is sufficient for the operation require(address(this).balance > _amount, "balance not sufficient"); - // Convert ETH amount to stablecoin value. - uint256 stablecoinValue = convertToStablecoin(address(0), _amount); // Check against the daily spent limit and update accordingly, require that the value is under remaining limit. - _enforceDailyLimit(stablecoinValue); + _enforceDailyLimit(address(0), _amount); // Then perform the transfer owner().transfer(_amount); // Emit the gas top up event. @@ -561,42 +596,6 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe } } - /// @dev Convert ether or ERC20 token amount to the corresponding stablecoin amount. - /// @param _token ERC20 token contract address. - /// @param _amount amount of token in base units. - /// @return the equivalent amount in stablecoin base units & 0 if the token is not available. - function convertToStablecoin(address _token, uint256 _amount) public view returns (uint256) { - // avoid the unnecessary calculations if the token to be loaded is the stablecoin itself - if (_token == _stablecoin()) { - return _amount; - } - - uint256 amountToSend = _amount; - - // convert token amount to ETH first (0x0 represents ether) - if (_token != address(0)) { - // Store the token in memory to save map entry lookup gas. - (, uint256 magnitude, uint256 rate, bool available, , , ) = _getTokenInfo(_token); - - // if the token does NOT exist in the whitelist then return 0 - if (!available) { - return 0; - } - // if it exists then require that its rate is not zero. - require(rate != 0, "rate=0"); - // Safely convert the token amount to ether based on the exchange rate. - amountToSend = _amount.mul(rate).div(magnitude); - } - // _amountToSend now is in ether - // Get the stablecoin's magnitude and its current rate. - (, uint256 stablecoinMagnitude, uint256 stablecoinRate, bool stablecoinAvailable, , , ) = _getStablecoinInfo(); - // Check if the stablecoin rate is set. - require(stablecoinAvailable, "token not available"); - require(stablecoinRate != 0, "stablecoin rate=0"); - // Safely convert the token amount to stablecoin based on its exchange rate and the stablecoin exchange rate. - return amountToSend.mul(stablecoinMagnitude).div(stablecoinRate); - } - /// @dev This function allows for the owner to send any transaction from the Wallet to arbitrary addresses /// @param _destination address of the transaction /// @param _value ETH amount in wei @@ -609,9 +608,8 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe // If value is send across as a part of this executeTransaction, this will be sent to any payable // destination. As a result enforceLimit if destination is not whitelisted. if (!whitelistMap[_destination]) { - // Convert ETH value to stablecoin, 0x0 denotes ETH. - uint256 stablecoinValue = convertToStablecoin(address(0), _value); - _enforceDailyLimit(stablecoinValue); + // enforce daily limit, 0x0 denotes ETH. + _enforceDailyLimit(address(0), _value); } // Check if the destination is a Contract and it is one of our supported tokens @@ -621,11 +619,9 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe uint256 amount; (to, amount) = _getERC20RecipientAndAmount(_destination, _data); if (!whitelistMap[to]) { - // Convert token amount to stablecoin value. // If the address (of the token contract, e.g) is not in the TokenWhitelist used by the convert method // ...then stablecoinValue will be zero - uint256 stablecoinValue = convertToStablecoin(_destination, amount); - _enforceDailyLimit(stablecoinValue); + _enforceDailyLimit(_destination, amount); } // use callOptionalReturn provided in SafeERC20 in case the ERC20 method // returns false instead of reverting! @@ -674,9 +670,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe // Convert token amount to stablecoin value. // If the address (of the token contract) is not in the TokenWhitelist used by the convert method... // ...then stablecoinValue will be zero - uint256 stablecoinValue = convertToStablecoin(_asset, _amount); - // Check against the daily spent limit and update accordingly, require that the value is under remaining limit. - _enforceDailyLimit(stablecoinValue); + _enforceDailyLimit(_asset, _amount); } // Transfer token or ether based on the provided address. _safeTransfer(_to, _asset, _amount); diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index b4b6d181..15a2742e 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220903e8c208aa5d5398da18ee404ebca3df158058bf73e38e978001fb30c3c1ab064736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea264697066735822122062c70731c32d7a2fcaa3ec0d4967d99d39c457cfeac7a89f7b4bcc5463130a5a64736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index cd653575..9188b7a2 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603b5534801561007957600080fd5b50615314806100896000396000f3fe60806040526004361061025c5760003560e01c8063715018a611610144578063cbd2ac68116100b6578063de212bf31161007a578063de212bf314610cd9578063e2b4ce9714610cee578063e61c51ca14610d03578063f36febda14610d2d578063f421764814610d66578063f8b2cb4f14610de15761025c565b8063cbd2ac6814610b98578063cccdc55614610bc2578063cd7958dd14610bd7578063ce0b5bd514610c85578063d251fefc14610caf5761025c565b80638da5cb5b116101085780638da5cb5b14610a2a57806390e690c714610a3f578063aaf1fc6214610a54578063b242e53414610b05578063be40ba7914610b40578063beabacc814610b555761025c565b8063715018a61461093f578063747c31d6146109545780637d73b231146109695780637fd004fa1461099a578063877337b014610a155761025c565b80633b8252fa116101dd57806347b55a9d116101a157806347b55a9d146107eb5780634d9aa248146108005780635adc02ab146108155780636137d6701461083f57806369efdfc0146108ba5780636c37a7e6146109155761025c565b80633b8252fa146105ed5780633f579f4214610614578063458d07f2146106da57806345b12efc1461070457806346efe0ed146107195761025c565b80632121dc75116102245780632121dc75146104ff57806326d05ab214610514578063294f40251461052957806332531c3c1461058e5780633a43199f146105c15761025c565b806301ffc9a714610261578063100f23fd146102a95780631127b57e146102d55780631626ba7e1461035f57806320c13b0b14610434575b600080fd5b34801561026d57600080fd5b506102956004803603602081101561028457600080fd5b50356001600160e01b031916610e14565b604080519115158252519081900360200190f35b3480156102b557600080fd5b506102d3600480360360208110156102cc57600080fd5b5035610e2e565b005b3480156102e157600080fd5b506102ea610fd5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032457818101518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036b57600080fd5b506104176004803603604081101561038257600080fd5b81359190810190604081016020820135600160201b8111156103a357600080fd5b8201836020820111156103b557600080fd5b803590602001918460018302840111600160201b831117156103d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ff6945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561044057600080fd5b506104176004803603604081101561045757600080fd5b810190602081018135600160201b81111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111600160201b831117156104a457600080fd5b919390929091602081019035600160201b8111156104c157600080fd5b8201836020820111156104d357600080fd5b803590602001918460018302840111600160201b831117156104f457600080fd5b509092509050611065565b34801561050b57600080fd5b5061029561113c565b34801561052057600080fd5b5061029561114d565b34801561053557600080fd5b5061053e611156565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057a578181015183820152602001610562565b505050509050019250505060405180910390f35b34801561059a57600080fd5b50610295600480360360208110156105b157600080fd5b50356001600160a01b03166111b8565b6102d3600480360360408110156105d757600080fd5b506001600160a01b0381351690602001356111cd565b3480156105f957600080fd5b506106026113ed565b60408051918252519081900360200190f35b34801561062057600080fd5b506102ea6004803603606081101561063757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460018302840111600160201b8311171561069957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113f3945050505050565b3480156106e657600080fd5b506102d3600480360360208110156106fd57600080fd5b50356118d5565b34801561071057600080fd5b506106026119bd565b34801561072557600080fd5b506102d36004803603606081101561073c57600080fd5b81359190810190604081016020820135600160201b81111561075d57600080fd5b82018360208201111561076f57600080fd5b803590602001918460018302840111600160201b8311171561079057600080fd5b919390929091602081019035600160201b8111156107ad57600080fd5b8201836020820111156107bf57600080fd5b803590602001918460018302840111600160201b831117156107e057600080fd5b5090925090506119db565b3480156107f757600080fd5b5061053e611d22565b34801561080c57600080fd5b50610602611d82565b34801561082157600080fd5b506102d36004803603602081101561083857600080fd5b5035611d88565b34801561084b57600080fd5b506102d36004803603602081101561086257600080fd5b810190602081018135600160201b81111561087c57600080fd5b82018360208201111561088e57600080fd5b803590602001918460208302840111600160201b831117156108af57600080fd5b50909250905061205e565b3480156108c657600080fd5b506102d3600480360360e08110156108dd57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c00135612286565b34801561092157600080fd5b506102d36004803603602081101561093857600080fd5b503561235a565b34801561094b57600080fd5b506102d3612480565b34801561096057600080fd5b5061060261257e565b34801561097557600080fd5b5061097e612584565b604080516001600160a01b039092168252519081900360200190f35b3480156109a657600080fd5b506102d3600480360360208110156109bd57600080fd5b810190602081018135600160201b8111156109d757600080fd5b8201836020820111156109e957600080fd5b803590602001918460208302840111600160201b83111715610a0a57600080fd5b509092509050612593565b348015610a2157600080fd5b506106026128d7565b348015610a3657600080fd5b5061097e6128dd565b348015610a4b57600080fd5b506102d36128ec565b348015610a6057600080fd5b506102d360048036036020811015610a7757600080fd5b810190602081018135600160201b811115610a9157600080fd5b820183602082011115610aa357600080fd5b803590602001918460018302840111600160201b83111715610ac457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612949945050505050565b348015610b1157600080fd5b506102d360048036036040811015610b2857600080fd5b506001600160a01b0381351690602001351515612a6c565b348015610b4c57600080fd5b50610295612c26565b348015610b6157600080fd5b506102d360048036036060811015610b7857600080fd5b506001600160a01b03813581169160208101359091169060400135612c35565b348015610ba457600080fd5b506102d360048036036020811015610bbb57600080fd5b5035612daa565b348015610bce57600080fd5b50610602613140565b348015610be357600080fd5b5061060260048036036020811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460208302840111600160201b83111715610c4757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613146945050505050565b348015610c9157600080fd5b506102d360048036036020811015610ca857600080fd5b50356131a0565b348015610cbb57600080fd5b5061097e60048036036020811015610cd257600080fd5b503561334b565b348015610ce557600080fd5b50610295613372565b348015610cfa57600080fd5b50610602613380565b348015610d0f57600080fd5b506102d360048036036020811015610d2657600080fd5b5035613386565b348015610d3957600080fd5b5061060260048036036040811015610d5057600080fd5b506001600160a01b038135169060200135613527565b348015610d7257600080fd5b506102d360048036036020811015610d8957600080fd5b810190602081018135600160201b811115610da357600080fd5b820183602082011115610db557600080fd5b803590602001918460208302840111600160201b83111715610dd657600080fd5b50909250905061369e565b348015610ded57600080fd5b5061060260048036036020811015610e0457600080fd5b50356001600160a01b03166139f2565b6001600160e01b031981166301ffc9a760e01b145b919050565b610e37336139fd565b80610e465750610e4633613a11565b610e92576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a5460ff16610ee1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610f446038805480602002602001604051908101604052809291908181526020018280548015610f3a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f1c575b5050505050613146565b8114610f815760405162461bcd60e51b81526004018080602001828103825260238152602001806152866023913960400191505060405180910390fd5b610f8d60386000615049565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806110038484613a9c565b905061100e816139fd565b611053576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b95506110dc9450869350899150889081908401838280828437600092019190915250610ff692505050565b6001600160e01b03191614611128576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b60366020526000908152604090205460ff1681565b6111d6336139fd565b806111e057503330145b611226576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b61122f82613c87565b611275576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006112818383613527565b905061128c81613ca1565b6000611299604154613d41565b90506001600160a01b03841615611332576112be6001600160a01b0385168285613e62565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b505050506113a3565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561138957600080fd5b505af115801561139d573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603e5490565b60606113fe336139fd565b8061140857503330145b61144e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff1661148857600061147b600085613527565b905061148681613ca1565b505b61149a846001600160a01b0316613f7a565b80156114aa57506114aa84613f80565b1561167a576000806114bc8685613f9a565b6001600160a01b038216600090815260366020526040902054919350915060ff166114fa5760006114ed8783613527565b90506114f881613ca1565b505b61150d6001600160a01b0387168561409b565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061154057fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156115d25781810151838201526020016115ba565b50505050905090810190601f1680156115ff5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561163257818101518382015260200161161a565b50505050905090810190601f16801561165f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506118ce915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106116b95780518252601f19909201916020918201910161169a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461171b576040519150601f19603f3d011682016040523d82523d6000602084013e611720565b606091505b50915091508181906117b05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561177557818101518382015260200161175d565b50505050905090810190601f1680156117a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561182c578181015183820152602001611814565b50505050905090810190601f1680156118595780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561188c578181015183820152602001611874565b50505050905090810190601f1680156118b95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6118de336139fd565b806118e857503330145b61192e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603e819055603c54811161198657603d5481101561197857603d819055603f5460408051838152602081019290925280516000805160206151838339815191529281900390910190a15b6119818161414c565b6119ba565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000603f544211156119d25750603c5461114a565b50603d5461114a565b6119e433613a11565b611a32576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b60004690506000611aa9823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061418f565b9050631626ba7e60e01b6001600160e01b031916611afd8286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ff692505050565b6001600160e01b03191614611b49576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6040548714611b8b576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611b936141e0565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611bf3576040519150601f19603f3d011682016040523d82523d6000602084013e611bf8565b606091505b5091509150818190611c4b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611cda578181015183820152602001611cc2565b50505050905090810190601f168015611d075780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b603c5490565b611d9133613a11565b611ddf576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a5460ff16611e2e576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611e8f6038805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114611ecc5760405162461bcd60e51b81526004018080602001828103825260238152602001806152866023913960400191505060405180910390fd5b60005b603854811015611fb3576036600060388381548110611eea57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611fab5760016036600060388481548110611f2957fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603880546037919083908110611f6f57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611ecf565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561203657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612018575b5050935050505060405180910390a161205160386000615049565b50603a805460ff19169055565b612067336139fd565b8061207157503330145b6120b7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156120d25750603a54610100900460ff16155b612123576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff1661217c576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806121c0576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6121cc60398383615067565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d1928592859261223b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff168061229f575061229f614226565b806122ad575060005460ff16155b6122e85760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015612313576000805460ff1961ff0019909116610100171660011790555b61231c8661422c565b612325846142fa565b61232f88886143a7565b6123398286614506565b60418390558015612350576000805461ff00191690555b5050505050505050565b61236333613a11565b6123b1576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b80603e54146123f15760405162461bcd60e51b81526004018080602001828103825260258152602001806152146025913960400191505060405180910390fd5b603c5481116124315760405162461bcd60e51b81526004018080602001828103825260288152602001806150ff6028913960400191505060405180910390fd5b603d819055612443426201518061466a565b603f819055603d546040805191825260208201929092528151600080516020615183833981519152929181900390910190a16119ba603e5461414c565b612489336139fd565b6124d3576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612531576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60415490565b6033546001600160a01b031690565b61259c336139fd565b806125a657503330145b6125ec576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156126075750603a54610100900460ff16155b612658576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612774576126b18282815181106126a457fe5b60200260200101516139fd565b156126fc576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061271357fe5b60200260200101516001600160a01b0316141561276c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161268c565b50603a5462010000900460ff166127ce576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612812576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61281e60388484615067565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261288b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603b5490565b6035546001600160a01b031690565b6128f5336139fd565b61293f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6129476141e0565b565b612952336139fd565b8061295c57503330145b6129a2576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8051602080820191906000808060605b86851015612350576129c58660546146c4565b888601805160148201516034909201805193995060609190911c965090945090925090506129fe60546129f8878561466a565b9061466a565b945086851115612a45576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612a5b57506040805160208101909152600081525b612a668484836113f3565b506129b2565b612a75336139fd565b612abf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612b1d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612b625760405162461bcd60e51b81526004018080602001828103825260238152602001806152396023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612bbb57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b612c3e336139fd565b80612c4857503330145b612c8e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8080612ccb576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612d16576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16612d4f576000612d428484613527565b9050612d4d81613ca1565b505b612d5a848484614706565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b612db333613a11565b612e01576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a54610100900460ff16612e55576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b612eb66039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114612ef35760405162461bcd60e51b81526004018080602001828103825260238152602001806152866023913960400191505060405180910390fd5b60005b603954811015613094576036600060398381548110612f1157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561308c5760006036600060398481548110612f5157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603754612f959060016146c4565b81101561305d5760398281548110612fa957fe5b600091825260209091200154603780546001600160a01b039092169183908110612fcf57fe5b6000918252602090912001546001600160a01b0316141561305557603780546000198101908110612ffc57fe5b600091825260209091200154603780546001600160a01b03909216918390811061302257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061305d565b600101612f87565b50603780548061306957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101612ef6565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561311757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116130f9575b5050935050505060405180910390a161313260396000615049565b50603a805461ff0019169055565b60405481565b60008160405160200180828051906020019060200280838360005b83811015613179578181015183820152602001613161565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6131a9336139fd565b806131b857506131b833613a11565b613204576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a54610100900460ff16613258576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6132b96039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b81146132f65760405162461bcd60e51b81526004018080602001828103825260238152602001806152866023913960400191505060405180910390fd5b61330260396000615049565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061335857fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b80806133c3576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6133cc336139fd565b806133db57506133db33613a11565b613427576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b814711613474576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b6000613481600084613527565b905061348c81613ca1565b6134946128dd565b6001600160a01b03166108fc849081150290604051600060405180830381858888f193505050501580156134cc573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336134f76128dd565b604080516001600160a01b03938416815291909216602082015280820186905290519081900360600190a1505050565b6000613531614740565b6001600160a01b0316836001600160a01b0316141561355157508061105f565b816001600160a01b038416156135e057600080600061356f876147b6565b505050935093509350508061358b57600094505050505061105f565b816135c6576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6135da836135d4888561493f565b90614998565b93505050505b60008060006135ed6149da565b505050935093509350508061363f576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613685576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613693826135d4868661493f565b979650505050505050565b6136a7336139fd565b806136b157503330145b6136f7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613806576137438282815181106126a457fe5b1561378e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106137a557fe5b60200260200101516001600160a01b031614156137fe576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161372b565b50603a5462010000900460ff161561385d576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561394e576036600085858481811061387857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613946576001603660008686858181106138b457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550603784848381811061390957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613860565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a94929390929091906060830190849080156139de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116139c0575b5050935050505060405180910390a1505050565b600061105f82614b49565b6035546001600160a01b0390811691161490565b6000613a1e603454613d41565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613a6a57600080fd5b505afa158015613a7e573d6000803e3d6000fd5b505050506040513d6020811015613a9457600080fd5b505192915050565b60008151604114613af4576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b655760405162461bcd60e51b81526004018080602001828103825260228152602001806151616022913960400191505060405180910390fd5b8060ff16601b14158015613b7d57508060ff16601c14155b15613bb95760405162461bcd60e51b81526004018080602001828103825260228152602001806151a36022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613c15573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613c7d576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613c93836147b6565b509098975050505050505050565b613ca9614bda565b80603d541015613d00576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603d54613d0d90826146c4565b603d819055603f5460408051928352602083019190915280516000805160206151838339815191529281900390910190a150565b6033546000906001600160a01b0316613da1576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015613ded57600080fd5b505afa158015613e01573d6000803e3d6000fd5b505050506040513d6020811015613e1757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015613a6a57600080fd5b801580613ee8575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613eba57600080fd5b505afa158015613ece573d6000803e3d6000fd5b505050506040513d6020811015613ee457600080fd5b5051155b613f235760405162461bcd60e51b81526004018080602001828103825260368152602001806152a96036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613f7590849061409b565b505050565b3b151590565b600080613f8c836147b6565b509198975050505050505050565b600080613fa8603b54613d41565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614013578181015183820152602001613ffb565b50505050905090810190601f1680156140405780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561405d57600080fd5b505afa158015614071573d6000803e3d6000fd5b505050506040513d604081101561408757600080fd5b508051602090910151909590945092505050565b60606140f0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c2a9092919063ffffffff16565b805190915015613f755780806020019051602081101561410f57600080fd5b5051613f755760405162461bcd60e51b815260040180806020018281038252602a81526020018061525c602a913960400191505060405180910390fd5b603c819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604080546001018082558151338152602081019190915281517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff929181900390910190a1565b303b1590565b600054610100900460ff16806142455750614245614226565b80614253575060005460ff16155b61428e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff161580156142b9576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156142e457603380546001600160a01b0319166001600160a01b0384161790555b80156142f6576000805461ff00191690555b5050565b600054610100900460ff16806143135750614313614226565b80614321575060005460ff16155b61435c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015614387576000805460ff1961ff0019909116610100171660011790555b81156142e457603482905580156142f6576000805461ff00191690555050565b600054610100900460ff16806143c057506143c0614226565b806143ce575060005460ff16155b6144095760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015614434576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff9104166144ac57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015613f75576000805461ff0019169055505050565b600054610100900460ff168061451f575061451f614226565b8061452d575060005460ff16155b6145685760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015614593576000805460ff1961ff0019909116610100171660011790555b61459c82614c39565b60006145a66149da565b5050505050915050600081116145f3576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603c819055603d819055603e819055614612426201518061466a565b603f81905560408051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a150508015613f75576000805461ff0019169055505050565b6000828201838110156118ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006118ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614ce6565b6001600160a01b03821661472c576147276001600160a01b03841682614d40565b613f75565b613f756001600160a01b0383168483614e25565b600061474d603b54613d41565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561478557600080fd5b505afa158015614799573d6000803e3d6000fd5b505050506040513d60208110156147af57600080fd5b5051905090565b60606000806000806000806147cc603b54613d41565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561481857600080fd5b505afa15801561482c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561485557600080fd5b8101908080516040519392919084600160201b82111561487457600080fd5b90830190602082018581111561488957600080fd5b8251600160201b8111828201881017156148a257600080fd5b82525081516020918201929091019080838360005b838110156148cf5781810151838201526020016148b7565b50505050905090810190601f1680156148fc5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261494e5750600061105f565b8282028284828161495b57fe5b04146118ce5760405162461bcd60e51b81526004018080602001828103825260218152602001806151c56021913960400191505060405180910390fd5b60006118ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614e77565b60606000806000806000806149f0603b54613d41565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614a2857600080fd5b505afa158015614a3c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614a6557600080fd5b8101908080516040519392919084600160201b821115614a8457600080fd5b908301906020820185811115614a9957600080fd5b8251600160201b811182820188101715614ab257600080fd5b82525081516020918201929091019080838360005b83811015614adf578181015183820152602001614ac7565b50505050905090810190601f168015614b0c5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b03821615614bd357604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015614ba057600080fd5b505afa158015614bb4573d6000803e3d6000fd5b505050506040513d6020811015614bca57600080fd5b50519050610e29565b5047610e29565b603f5442111561294757614bf1426201518061466a565b603f819055603c54603d8190556040805191825260208201929092528151600080516020615183833981519152929181900390910190a1565b60606111348484600085614edc565b600054610100900460ff1680614c525750614c52614226565b80614c60575060005460ff16155b614c9b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151e6602e913960400191505060405180910390fd5b600054610100900460ff16158015614cc6576000805460ff1961ff0019909116610100171660011790555b81156142e457603b82905580156142f6576000805461ff00191690555050565b60008184841115614d385760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b505050900390565b80471015614d95576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114614de0576040519150601f19603f3d011682016040523d82523d6000602084013e614de5565b606091505b5050905080613f755760405162461bcd60e51b815260040180806020018281038252603a815260200180615127603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613f7590849061409b565b60008183614ec65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b506000838581614ed257fe5b0495945050505050565b6060614ee785613f7a565b614f38576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614f775780518252601f199092019160209182019101614f58565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fd9576040519150601f19603f3d011682016040523d82523d6000602084013e614fde565b606091505b50915091508115614ff25791506111349050565b8051156150025780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561177557818101518382015260200161175d565b50805460008255906000526020600020908101906119ba91906150ca565b8280548282559060005260206000209081019282156150ba579160200282015b828111156150ba5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615087565b506150c69291506150df565b5090565b5b808211156150c657600081556001016150cb565b5b808211156150c65780546001600160a01b03191681556001016150e056fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e65416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220cd3f3f2f04c410346cfb46779ba9e6dbbca54530272bb4a6a1c29cc5561fdb2d64736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603b5534801561007957600080fd5b506152db806100896000396000f3fe60806040526004361061025c5760003560e01c8063715018a611610144578063cbd2ac68116100b6578063de212bf31161007a578063de212bf314610cd9578063e2b4ce9714610cee578063e61c51ca14610d03578063f36febda14610d2d578063f421764814610d66578063f8b2cb4f14610de15761025c565b8063cbd2ac6814610b98578063cccdc55614610bc2578063cd7958dd14610bd7578063ce0b5bd514610c85578063d251fefc14610caf5761025c565b80638da5cb5b116101085780638da5cb5b14610a2a57806390e690c714610a3f578063aaf1fc6214610a54578063b242e53414610b05578063be40ba7914610b40578063beabacc814610b555761025c565b8063715018a61461093f578063747c31d6146109545780637d73b231146109695780637fd004fa1461099a578063877337b014610a155761025c565b80633b8252fa116101dd57806347b55a9d116101a157806347b55a9d146107eb5780634d9aa248146108005780635adc02ab146108155780636137d6701461083f57806369efdfc0146108ba5780636c37a7e6146109155761025c565b80633b8252fa146105ed5780633f579f4214610614578063458d07f2146106da57806345b12efc1461070457806346efe0ed146107195761025c565b80632121dc75116102245780632121dc75146104ff57806326d05ab214610514578063294f40251461052957806332531c3c1461058e5780633a43199f146105c15761025c565b806301ffc9a714610261578063100f23fd146102a95780631127b57e146102d55780631626ba7e1461035f57806320c13b0b14610434575b600080fd5b34801561026d57600080fd5b506102956004803603602081101561028457600080fd5b50356001600160e01b031916610e14565b604080519115158252519081900360200190f35b3480156102b557600080fd5b506102d3600480360360208110156102cc57600080fd5b5035610e2e565b005b3480156102e157600080fd5b506102ea610fd5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032457818101518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036b57600080fd5b506104176004803603604081101561038257600080fd5b81359190810190604081016020820135600160201b8111156103a357600080fd5b8201836020820111156103b557600080fd5b803590602001918460018302840111600160201b831117156103d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ff6945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561044057600080fd5b506104176004803603604081101561045757600080fd5b810190602081018135600160201b81111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111600160201b831117156104a457600080fd5b919390929091602081019035600160201b8111156104c157600080fd5b8201836020820111156104d357600080fd5b803590602001918460018302840111600160201b831117156104f457600080fd5b509092509050611065565b34801561050b57600080fd5b5061029561113c565b34801561052057600080fd5b5061029561114d565b34801561053557600080fd5b5061053e611156565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057a578181015183820152602001610562565b505050509050019250505060405180910390f35b34801561059a57600080fd5b50610295600480360360208110156105b157600080fd5b50356001600160a01b03166111b8565b6102d3600480360360408110156105d757600080fd5b506001600160a01b0381351690602001356111cd565b3480156105f957600080fd5b506106026113df565b60408051918252519081900360200190f35b34801561062057600080fd5b506102ea6004803603606081101561063757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460018302840111600160201b8311171561069957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113e5945050505050565b3480156106e657600080fd5b506102d3600480360360208110156106fd57600080fd5b50356118a9565b34801561071057600080fd5b50610602611991565b34801561072557600080fd5b506102d36004803603606081101561073c57600080fd5b81359190810190604081016020820135600160201b81111561075d57600080fd5b82018360208201111561076f57600080fd5b803590602001918460018302840111600160201b8311171561079057600080fd5b919390929091602081019035600160201b8111156107ad57600080fd5b8201836020820111156107bf57600080fd5b803590602001918460018302840111600160201b831117156107e057600080fd5b5090925090506119af565b3480156107f757600080fd5b5061053e611cf6565b34801561080c57600080fd5b50610602611d56565b34801561082157600080fd5b506102d36004803603602081101561083857600080fd5b5035611d5c565b34801561084b57600080fd5b506102d36004803603602081101561086257600080fd5b810190602081018135600160201b81111561087c57600080fd5b82018360208201111561088e57600080fd5b803590602001918460208302840111600160201b831117156108af57600080fd5b509092509050612032565b3480156108c657600080fd5b506102d3600480360360e08110156108dd57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c0013561225a565b34801561092157600080fd5b506102d36004803603602081101561093857600080fd5b503561232e565b34801561094b57600080fd5b506102d3612454565b34801561096057600080fd5b50610602612552565b34801561097557600080fd5b5061097e612558565b604080516001600160a01b039092168252519081900360200190f35b3480156109a657600080fd5b506102d3600480360360208110156109bd57600080fd5b810190602081018135600160201b8111156109d757600080fd5b8201836020820111156109e957600080fd5b803590602001918460208302840111600160201b83111715610a0a57600080fd5b509092509050612567565b348015610a2157600080fd5b506106026128ab565b348015610a3657600080fd5b5061097e6128b1565b348015610a4b57600080fd5b506102d36128c0565b348015610a6057600080fd5b506102d360048036036020811015610a7757600080fd5b810190602081018135600160201b811115610a9157600080fd5b820183602082011115610aa357600080fd5b803590602001918460018302840111600160201b83111715610ac457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061291d945050505050565b348015610b1157600080fd5b506102d360048036036040811015610b2857600080fd5b506001600160a01b0381351690602001351515612a40565b348015610b4c57600080fd5b50610295612bfa565b348015610b6157600080fd5b506102d360048036036060811015610b7857600080fd5b506001600160a01b03813581169160208101359091169060400135612c09565b348015610ba457600080fd5b506102d360048036036020811015610bbb57600080fd5b5035612d6f565b348015610bce57600080fd5b50610602613105565b348015610be357600080fd5b5061060260048036036020811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460208302840111600160201b83111715610c4757600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061310b945050505050565b348015610c9157600080fd5b506102d360048036036020811015610ca857600080fd5b5035613165565b348015610cbb57600080fd5b5061097e60048036036020811015610cd257600080fd5b5035613310565b348015610ce557600080fd5b50610295613337565b348015610cfa57600080fd5b50610602613345565b348015610d0f57600080fd5b506102d360048036036020811015610d2657600080fd5b503561334b565b348015610d3957600080fd5b5061060260048036036040811015610d5057600080fd5b506001600160a01b0381351690602001356134de565b348015610d7257600080fd5b506102d360048036036020811015610d8957600080fd5b810190602081018135600160201b811115610da357600080fd5b820183602082011115610db557600080fd5b803590602001918460208302840111600160201b83111715610dd657600080fd5b509092509050613655565b348015610ded57600080fd5b5061060260048036036020811015610e0457600080fd5b50356001600160a01b03166139a9565b6001600160e01b031981166301ffc9a760e01b145b919050565b610e37336139b4565b80610e465750610e46336139c8565b610e92576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a5460ff16610ee1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610f446038805480602002602001604051908101604052809291908181526020018280548015610f3a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f1c575b505050505061310b565b8114610f815760405162461bcd60e51b815260040180806020018281038252602381526020018061524d6023913960400191505060405180910390fd5b610f8d60386000615010565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806110038484613a53565b905061100e816139b4565b611053576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b95506110dc9450869350899150889081908401838280828437600092019190915250610ff692505050565b6001600160e01b03191614611128576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b60366020526000908152604090205460ff1681565b6111d6336139b4565b806111e057503330145b611226576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b61122f82613c3e565b611275576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b61127f8282613c58565b600061128c604154613d08565b90506001600160a01b03831615611325576112b16001600160a01b0384168284613e29565b806001600160a01b0316631b3c96b484846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561130857600080fd5b505af115801561131c573d6000803e3d6000fd5b50505050611396565b806001600160a01b0316631b3c96b48385856040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561137c57600080fd5b505af1158015611390573d6000803e3d6000fd5b50505050505b604080516001600160a01b03851681526020810184905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a1505050565b603e5490565b60606113f0336139b4565b806113fa57503330145b611440576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff1661146b5761146b600084613c58565b61147d846001600160a01b0316613f41565b801561148d575061148d84613f47565b1561164e5760008061149f8685613f61565b6001600160a01b038216600090815260366020526040902054919350915060ff166114ce576114ce8682613c58565b6114e16001600160a01b03871685614062565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061151457fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156115a657818101518382015260200161158e565b50505050905090810190601f1680156115d35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156116065781810151838201526020016115ee565b50505050905090810190601f1680156116335780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506118a2915050565b60006060856001600160a01b031685856040518082805190602001908083835b6020831061168d5780518252601f19909201916020918201910161166e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116ef576040519150601f19603f3d011682016040523d82523d6000602084013e6116f4565b606091505b50915091508181906117845760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611749578181015183820152602001611731565b50505050905090810190601f1680156117765780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156118005781810151838201526020016117e8565b50505050905090810190601f16801561182d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611860578181015183820152602001611848565b50505050905090810190601f16801561188d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6118b2336139b4565b806118bc57503330145b611902576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603e819055603c54811161195a57603d5481101561194c57603d819055603f54604080518381526020810192909252805160008051602061514a8339815191529281900390910190a15b61195581614113565b61198e565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000603f544211156119a65750603c5461114a565b50603d5461114a565b6119b8336139c8565b611a06576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b60004690506000611a7d823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614156565b9050631626ba7e60e01b6001600160e01b031916611ad18286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ff692505050565b6001600160e01b03191614611b1d576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6040548714611b5f576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611b676141a7565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611bc7576040519150601f19603f3d011682016040523d82523d6000602084013e611bcc565b606091505b5091509150818190611c1f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611749578181015183820152602001611731565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611cae578181015183820152602001611c96565b50505050905090810190601f168015611cdb5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b603c5490565b611d65336139c8565b611db3576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a5460ff16611e02576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611e636038805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c57505050505061310b565b8114611ea05760405162461bcd60e51b815260040180806020018281038252602381526020018061524d6023913960400191505060405180910390fd5b60005b603854811015611f87576036600060388381548110611ebe57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611f7f5760016036600060388481548110611efd57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603880546037919083908110611f4357fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611ea3565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561200a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611fec575b5050935050505060405180910390a161202560386000615010565b50603a805460ff19169055565b61203b336139b4565b8061204557503330145b61208b576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156120a65750603a54610100900460ff16155b6120f7576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff16612150576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b80612194576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6121a06039838361502e565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d1928592859261220f9285918591829185019084908082843760009201919091525061310b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff168061227357506122736141ed565b80612281575060005460ff16155b6122bc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151ad602e913960400191505060405180910390fd5b600054610100900460ff161580156122e7576000805460ff1961ff0019909116610100171660011790555b6122f0866141f3565b6122f9846142c1565b612303888861436e565b61230d82866144cd565b60418390558015612324576000805461ff00191690555b5050505050505050565b612337336139c8565b612385576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b80603e54146123c55760405162461bcd60e51b81526004018080602001828103825260258152602001806151db6025913960400191505060405180910390fd5b603c5481116124055760405162461bcd60e51b81526004018080602001828103825260288152602001806150c66028913960400191505060405180910390fd5b603d8190556124174262015180614631565b603f819055603d54604080519182526020820192909252815160008051602061514a833981519152929181900390910190a161198e603e54614113565b61245d336139b4565b6124a7576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612505576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60415490565b6033546001600160a01b031690565b612570336139b4565b8061257a57503330145b6125c0576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156125db5750603a54610100900460ff16155b61262c576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156127485761268582828151811061267857fe5b60200260200101516139b4565b156126d0576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106126e757fe5b60200260200101516001600160a01b03161415612740576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612660565b50603a5462010000900460ff166127a2576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b816127e6576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6127f26038848461502e565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261285f9285918591829185019084908082843760009201919091525061310b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603b5490565b6035546001600160a01b031690565b6128c9336139b4565b612913576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b61291b6141a7565b565b612926336139b4565b8061293057503330145b612976576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156123245761299986605461468b565b888601805160148201516034909201805193995060609190911c965090945090925090506129d260546129cc8785614631565b90614631565b945086851115612a19576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612a2f57506040805160208101909152600081525b612a3a8484836113e5565b50612986565b612a49336139b4565b612a93576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612af1576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612b365760405162461bcd60e51b81526004018080602001828103825260238152602001806152006023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612b8f57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b612c12336139b4565b80612c1c57503330145b612c62576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8080612c9f576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612cea576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16612d1457612d148383613c58565b612d1f8484846146cd565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b612d78336139c8565b612dc6576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a54610100900460ff16612e1a576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b612e7b6039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c57505050505061310b565b8114612eb85760405162461bcd60e51b815260040180806020018281038252602381526020018061524d6023913960400191505060405180910390fd5b60005b603954811015613059576036600060398381548110612ed657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156130515760006036600060398481548110612f1657fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603754612f5a90600161468b565b8110156130225760398281548110612f6e57fe5b600091825260209091200154603780546001600160a01b039092169183908110612f9457fe5b6000918252602090912001546001600160a01b0316141561301a57603780546000198101908110612fc157fe5b600091825260209091200154603780546001600160a01b039092169183908110612fe757fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613022565b600101612f4c565b50603780548061302e57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101612ebb565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156130dc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116130be575b5050935050505060405180910390a16130f760396000615010565b50603a805461ff0019169055565b60405481565b60008160405160200180828051906020019060200280838360005b8381101561313e578181015183820152602001613126565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61316e336139b4565b8061317d575061317d336139c8565b6131c9576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a54610100900460ff1661321d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61327e6039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c57505050505061310b565b81146132bb5760405162461bcd60e51b815260040180806020018281038252602381526020018061524d6023913960400191505060405180910390fd5b6132c760396000615010565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061331d57fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b8080613388576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613391336139b4565b806133a057506133a0336139c8565b6133ec576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b814711613439576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b613444600083613c58565b61344c6128b1565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613484573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336134af6128b1565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b60006134e8614707565b6001600160a01b0316836001600160a01b0316141561350857508061105f565b816001600160a01b038416156135975760008060006135268761477d565b505050935093509350508061354257600094505050505061105f565b8161357d576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6135918361358b8885614906565b9061495f565b93505050505b60008060006135a46149a1565b50505093509350935050806135f6576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b8161363c576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b61364a8261358b8686614906565b979650505050505050565b61365e336139b4565b8061366857503330145b6136ae576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156137bd576136fa82828151811061267857fe5b15613745576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061375c57fe5b60200260200101516001600160a01b031614156137b5576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b6001016136e2565b50603a5462010000900460ff1615613814576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613905576036600085858481811061382f57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff166138fd5760016036600086868581811061386b57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060378484838181106138c057fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613817565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561399557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613977575b5050935050505060405180910390a1505050565b600061105f82614b10565b6035546001600160a01b0390811691161490565b60006139d5603454613d08565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613a2157600080fd5b505afa158015613a35573d6000803e3d6000fd5b505050506040513d6020811015613a4b57600080fd5b505192915050565b60008151604114613aab576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b1c5760405162461bcd60e51b81526004018080602001828103825260228152602001806151286022913960400191505060405180910390fd5b8060ff16601b14158015613b3457508060ff16601c14155b15613b705760405162461bcd60e51b815260040180806020018281038252602281526020018061516a6022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613bcc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613c34576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613c4a8361477d565b509098975050505050505050565b6000613c6483836134de565b9050613c6e614ba1565b80603d541015613cc5576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603d54613cd2908261468b565b603d819055603f54604080519283526020830191909152805160008051602061514a8339815191529281900390910190a1505050565b6033546000906001600160a01b0316613d68576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015613db457600080fd5b505afa158015613dc8573d6000803e3d6000fd5b505050506040513d6020811015613dde57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015613a2157600080fd5b801580613eaf575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613e8157600080fd5b505afa158015613e95573d6000803e3d6000fd5b505050506040513d6020811015613eab57600080fd5b5051155b613eea5760405162461bcd60e51b81526004018080602001828103825260368152602001806152706036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613f3c908490614062565b505050565b3b151590565b600080613f538361477d565b509198975050505050505050565b600080613f6f603b54613d08565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613fda578181015183820152602001613fc2565b50505050905090810190601f1680156140075780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561402457600080fd5b505afa158015614038573d6000803e3d6000fd5b505050506040513d604081101561404e57600080fd5b508051602090910151909590945092505050565b60606140b7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bf19092919063ffffffff16565b805190915015613f3c578080602001905160208110156140d657600080fd5b5051613f3c5760405162461bcd60e51b815260040180806020018281038252602a815260200180615223602a913960400191505060405180910390fd5b603c819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604080546001018082558151338152602081019190915281517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff929181900390910190a1565b303b1590565b600054610100900460ff168061420c575061420c6141ed565b8061421a575060005460ff16155b6142555760405162461bcd60e51b815260040180806020018281038252602e8152602001806151ad602e913960400191505060405180910390fd5b600054610100900460ff16158015614280576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156142ab57603380546001600160a01b0319166001600160a01b0384161790555b80156142bd576000805461ff00191690555b5050565b600054610100900460ff16806142da57506142da6141ed565b806142e8575060005460ff16155b6143235760405162461bcd60e51b815260040180806020018281038252602e8152602001806151ad602e913960400191505060405180910390fd5b600054610100900460ff1615801561434e576000805460ff1961ff0019909116610100171660011790555b81156142ab57603482905580156142bd576000805461ff00191690555050565b600054610100900460ff168061438757506143876141ed565b80614395575060005460ff16155b6143d05760405162461bcd60e51b815260040180806020018281038252602e8152602001806151ad602e913960400191505060405180910390fd5b600054610100900460ff161580156143fb576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff91041661447357604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015613f3c576000805461ff0019169055505050565b600054610100900460ff16806144e657506144e66141ed565b806144f4575060005460ff16155b61452f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151ad602e913960400191505060405180910390fd5b600054610100900460ff1615801561455a576000805460ff1961ff0019909116610100171660011790555b61456382614c00565b600061456d6149a1565b5050505050915050600081116145ba576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603c819055603d819055603e8190556145d94262015180614631565b603f81905560408051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a150508015613f3c576000805461ff0019169055505050565b6000828201838110156118a2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006118a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614cad565b6001600160a01b0382166146f3576146ee6001600160a01b03841682614d07565b613f3c565b613f3c6001600160a01b0383168483614dec565b6000614714603b54613d08565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561474c57600080fd5b505afa158015614760573d6000803e3d6000fd5b505050506040513d602081101561477657600080fd5b5051905090565b6060600080600080600080614793603b54613d08565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b1580156147df57600080fd5b505afa1580156147f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561481c57600080fd5b8101908080516040519392919084600160201b82111561483b57600080fd5b90830190602082018581111561485057600080fd5b8251600160201b81118282018810171561486957600080fd5b82525081516020918201929091019080838360005b8381101561489657818101518382015260200161487e565b50505050905090810190601f1680156148c35780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b6000826149155750600061105f565b8282028284828161492257fe5b04146118a25760405162461bcd60e51b815260040180806020018281038252602181526020018061518c6021913960400191505060405180910390fd5b60006118a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614e3e565b60606000806000806000806149b7603b54613d08565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156149ef57600080fd5b505afa158015614a03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614a2c57600080fd5b8101908080516040519392919084600160201b821115614a4b57600080fd5b908301906020820185811115614a6057600080fd5b8251600160201b811182820188101715614a7957600080fd5b82525081516020918201929091019080838360005b83811015614aa6578181015183820152602001614a8e565b50505050905090810190601f168015614ad35780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b03821615614b9a57604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015614b6757600080fd5b505afa158015614b7b573d6000803e3d6000fd5b505050506040513d6020811015614b9157600080fd5b50519050610e29565b5047610e29565b603f5442111561291b57614bb84262015180614631565b603f819055603c54603d819055604080519182526020820192909252815160008051602061514a833981519152929181900390910190a1565b60606111348484600085614ea3565b600054610100900460ff1680614c195750614c196141ed565b80614c27575060005460ff16155b614c625760405162461bcd60e51b815260040180806020018281038252602e8152602001806151ad602e913960400191505060405180910390fd5b600054610100900460ff16158015614c8d576000805460ff1961ff0019909116610100171660011790555b81156142ab57603b82905580156142bd576000805461ff00191690555050565b60008184841115614cff5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611749578181015183820152602001611731565b505050900390565b80471015614d5c576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114614da7576040519150601f19603f3d011682016040523d82523d6000602084013e614dac565b606091505b5050905080613f3c5760405162461bcd60e51b815260040180806020018281038252603a8152602001806150ee603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613f3c908490614062565b60008183614e8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611749578181015183820152602001611731565b506000838581614e9957fe5b0495945050505050565b6060614eae85613f41565b614eff576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614f3e5780518252601f199092019160209182019101614f1f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fa0576040519150601f19603f3d011682016040523d82523d6000602084013e614fa5565b606091505b50915091508115614fb95791506111349050565b805115614fc95780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611749578181015183820152602001611731565b508054600082559060005260206000209081019061198e9190615091565b828054828255906000526020600020908101928215615081579160200282015b828111156150815781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019061504e565b5061508d9291506150a6565b5090565b5b8082111561508d5760008155600101615092565b5b8082111561508d5780546001600160a01b03191681556001016150a756fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e65416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a264697066735822122001d36edbfa8a9e1edabe3342e19fec5f4a8340d4eace33a3b53ea78a544fe70664736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index d077d18d..30490e93 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b5060405162000c4838038062000c488339818101604052606081101561009e57600080fd5b50805160208201516040909201519091906100b8836100d5565b6100c1826101a4565b80156100cd5760358190555b505050610258565b600054610100900460ff16806100ee57506100ee610252565b806100fc575060005460ff16155b6101385760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610163576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018e57603380546001600160a01b0319166001600160a01b0384161790555b80156101a0576000805461ff00191690555b5050565b600054610100900460ff16806101bd57506101bd610252565b806101cb575060005460ff16155b6102075760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610232576000805460ff1961ff0019909116610100171660011790555b811561018e57603482905580156101a0576000805461ff00191690555050565b303b1590565b6109b280620002686000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105db565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105ea565b34801561016c57600080fd5b50610175610605565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b031661060b565b3480156101c657600080fd5b506101756107a9565b6101d8336107af565b610229576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b0387811660009081526036602052604090205416156102805760405162461bcd60e51b815260040180806020018281038252602181526020018061095c6021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c357600080fd5b505afa1580156102d7573d6000803e3d6000fd5b505050506040513d60208110156102ed57600080fd5b50516001600160a01b03161461033b576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b600061034860355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049657806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050505b841561052a57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b5050505060003411156105d1576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105cf573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b610614336107af565b610665576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b600061067260355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b505050505050565b60345490565b60006107bc60345461083a565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505192915050565b6033546000906001600160a01b031661089a576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d602081101561091057600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561080857600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a264697066735822122046c4443ba0da307436c038ecadf94ec6465cc57e9d473b566353c491a26fc6f064736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b5060405162000c4838038062000c488339818101604052606081101561009e57600080fd5b50805160208201516040909201519091906100b8836100d5565b6100c1826101a4565b80156100cd5760358190555b505050610258565b600054610100900460ff16806100ee57506100ee610252565b806100fc575060005460ff16155b6101385760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610163576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018e57603380546001600160a01b0319166001600160a01b0384161790555b80156101a0576000805461ff00191690555b5050565b600054610100900460ff16806101bd57506101bd610252565b806101cb575060005460ff16155b6102075760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610232576000805460ff1961ff0019909116610100171660011790555b811561018e57603482905580156101a0576000805461ff00191690555050565b303b1590565b6109b280620002686000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105db565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105ea565b34801561016c57600080fd5b50610175610605565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b031661060b565b3480156101c657600080fd5b506101756107a9565b6101d8336107af565b610229576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b0387811660009081526036602052604090205416156102805760405162461bcd60e51b815260040180806020018281038252602181526020018061095c6021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c357600080fd5b505afa1580156102d7573d6000803e3d6000fd5b505050506040513d60208110156102ed57600080fd5b50516001600160a01b03161461033b576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b600061034860355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049657806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050505b841561052a57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b5050505060003411156105d1576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105cf573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b610614336107af565b610665576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b600061067260355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b505050505050565b60345490565b60006107bc60345461083a565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505192915050565b6033546000906001600160a01b031661089a576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d602081101561091057600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561080857600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a264697066735822122097a242dc261cc4b488d6392e6c8004933f214eb0bd5e477b29ccfd1427ed4aa164736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { From 0ea76b70535085751e88176cbc8ee1b930c346b1 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:35:58 +0100 Subject: [PATCH 36/66] wallet: add 2FA support --- contracts/wallet.sol | 86 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 70 insertions(+), 16 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 699f4cea..85a861b8 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -35,23 +35,76 @@ import "./internals/ownable.sol"; import "./internals/tokenWhitelistable.sol"; import "./internals/transferrable.sol"; -/// @title ControllableOwnable combines Controllable and Ownable -/// @dev providing an additional modifier to check if Owner or Controller -contract ControllableOwnable is Controllable, Ownable { - /// @dev Check if the sender is the Owner or one of the Controllers - modifier onlyOwnerOrController() { - require(_isOwner(msg.sender) || _isController(msg.sender), "Only owner or controller"); +/// @title OptOutableMonolith2FA is used a configurable 2FA. +/// @dev This provides the various modifiers and utility functions needed for 2FA. +/// @dev 2FA is needed to confirm changes to the security settings in the wallet. +contract OptOutableMonolith2FA is Controllable, Ownable { + event SetPersonal2FA(address _sender, address _p2FA); + event SetMonolith2FA(address _sender); + + bool public monolith2FA; + address public personal2FA; + + function _initialize2FA() internal initializer { + monolith2FA = true; + } + + // @dev This modifier ensures that a method is only accessible to 2nd factor + modifier only2FA() { + if (monolith2FA) { + require(_isController(msg.sender), "sender is not controller"); + } else { + require(msg.sender == personal2FA, "sender is not personal 2FA account"); + } _; } + + /// @dev Check if the sender is the Owner or 2FA + modifier onlyOwnerOr2FA() { + require (_isOwner(msg.sender) || _is2FA(msg.sender), "only owner or 2FA"); + _; + } + + /// @dev set Monolith to be the 2FA + function setMonolith2FA() external onlyOwner { + require(!monolith2FA, "monolith2FA already enabled"); + monolith2FA = true; + personal2FA = address(0); + emit SetMonolith2FA(msg.sender); + } + + function setPersonal2FA(address _p2FA) external onlyOwner { + require(_p2FA != address(0), "2FA cannot be set to zero"); + require(_p2FA != personal2FA, "address already set"); + require(_p2FA != address(this), "2FA cannot be the wallet address"); + personal2FA = _p2FA; + monolith2FA = false; + emit SetPersonal2FA(msg.sender, _p2FA); + } + + /// @dev utiliy function to check whether or not an address is valid 2FA'er + function _is2FA(address _sender) private view returns (bool) { + if (monolith2FA) { + return _isController(_sender); + } else { + return (_sender == personal2FA); + } + } } /// @title SelfCallableOwnable allows either owner or the contract itself to call its functions /// @dev providing an additional modifier to check if Owner or self is calling /// @dev the "self" here is used for the meta transactions contract SelfCallableOwnable is Ownable { + /// @dev Check if the sender is the Owner or self + modifier onlySelf() { + require (msg.sender == address(this), "not self"); + _; + } + /// @dev Check if the sender is the Owner or self modifier onlyOwnerOrSelf() { - require(_isOwner(msg.sender) || msg.sender == address(this), "Only owner or self"); + require (_isOwner(msg.sender) || msg.sender == address(this), "Not owner or self"); _; } } @@ -59,7 +112,7 @@ contract SelfCallableOwnable is Ownable { /// @title AddressWhitelist provides payee-whitelist functionality. /// @dev This contract will allow the user to maintain a whitelist of addresses /// @dev These addresses will live outside of the daily limit -contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { +contract AddressWhitelist is OptOutableMonolith2FA, SelfCallableOwnable { using SafeMath for uint256; event AddedToWhitelist(address _sender, address[] _addresses); @@ -94,7 +147,7 @@ contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { } /// @dev Cancel pending whitelist addition. - function cancelWhitelistAddition(bytes32 _hash) external onlyOwnerOrController { + function cancelWhitelistAddition(bytes32 _hash) external onlyOwnerOr2FA { // Check if operation has been submitted. require(submittedWhitelistAddition, "no pending submission"); // Require that confirmation hash and the hash of the pending whitelist addition match @@ -108,7 +161,7 @@ contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { } /// @dev Cancel pending removal of whitelisted addresses. - function cancelWhitelistRemoval(bytes32 _hash) external onlyOwnerOrController { + function cancelWhitelistRemoval(bytes32 _hash) external onlyOwnerOr2FA { // Check if operation has been submitted. require(submittedWhitelistRemoval, "no pending submission"); // Require that confirmation hash and the hash of the pending whitelist removal match @@ -124,7 +177,7 @@ contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { /// @dev Confirm pending whitelist addition. /// @dev This will only ever be applied post 2FA, by one of the Controllers /// @param _hash is the hash of the pending whitelist array, a form of lamport lock - function confirmWhitelistAddition(bytes32 _hash) external onlyController { + function confirmWhitelistAddition(bytes32 _hash) external only2FA { // Require that the whitelist addition has been submitted. require(submittedWhitelistAddition, "no pending submission"); // Require that confirmation hash and the hash of the pending whitelist addition match @@ -147,7 +200,7 @@ contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { } /// @dev Confirm pending removal of whitelisted addresses. - function confirmWhitelistRemoval(bytes32 _hash) external onlyController { + function confirmWhitelistRemoval(bytes32 _hash) external only2FA { // Require that the pending whitelist is not empty and the operation has been submitted. require(submittedWhitelistRemoval, "no pending submission"); // Require that confirmation hash and the hash of the pending whitelist removal match @@ -241,7 +294,7 @@ contract AddressWhitelist is ControllableOwnable, SelfCallableOwnable { } /// @title DailyLimit provides daily limit functionality -contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelistable { +contract DailyLimit is OptOutableMonolith2FA, SelfCallableOwnable, TokenWhitelistable { using SafeMath for uint256; event InitializedDailyLimit(uint256 _amount, uint256 _nextReset); @@ -267,7 +320,7 @@ contract DailyLimit is ControllableOwnable, SelfCallableOwnable, TokenWhitelista } /// @dev Confirm pending set daily limit operation. - function confirmDailyLimitUpdate(uint256 _amount) external onlyController { + function confirmDailyLimitUpdate(uint256 _amount) external only2FA { // Require that pending and confirmed limits are the same. require(_pendingLimit == _amount, "confirmed or submitted limit mismatch"); // The new limit should be always higher then the current one otherwise no 2FA would be needed @@ -397,6 +450,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe bytes32 _licenceNode_, uint256 _dailyLimit_ ) external initializer { + _initialize2FA(); _initializeENSResolvable(_ens_); _initializeControllable(_controllerNode_); _initializeOwnable(_owner_, _transferable_); @@ -419,7 +473,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe uint256 _nonce, bytes calldata _data, bytes calldata _signature - ) external onlyController { + ) external only2FA { // Expecting prefixed data ("monolith:") indicating relayed transaction... // ...and an Ethereum Signed Message to protect user from signing an actual Tx uint256 id; @@ -504,7 +558,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe /// @dev Refill owner's gas balance, revert if the transaction amount is too large /// @param _amount is the amount of ether to transfer to the owner account in wei. - function topUpGas(uint256 _amount) external isNotZero(_amount) onlyOwnerOrController { + function topUpGas(uint256 _amount) external isNotZero(_amount) onlyOwnerOr2FA { // Check contract balance is sufficient for the operation require(address(this).balance > _amount, "balance not sufficient"); // Check against the daily spent limit and update accordingly, require that the value is under remaining limit. From aee030f7fb6eaf0fb37bd35787b8f16a577485e9 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:36:23 +0100 Subject: [PATCH 37/66] test: add 2fa dedicated tests --- test/wallet/2fa_test.go | 316 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100644 test/wallet/2fa_test.go diff --git a/test/wallet/2fa_test.go b/test/wallet/2fa_test.go new file mode 100644 index 00000000..c49ae4cd --- /dev/null +++ b/test/wallet/2fa_test.go @@ -0,0 +1,316 @@ +package wallet_test + +import ( + "github.com/ethereum/go-ethereum/common" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + . "github.com/tokencard/contracts/v3/test/shared" + + "github.com/tokencard/ethertest" +) + +var _ = Describe("2FA", func() { + + It("should be true", func() { + oo, err := WalletProxy.Monolith2FA(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(oo).To(BeTrue()) + }) + + It("should NOT allow a non-owner to set Monolith 2FA", func() { + tx, err := WalletProxy.SetMonolith2FA(Controller.TransactOpts(ethertest.WithGasLimit(60000))) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not owner")) + }) + + It("should fail if Monolith 2FA is already enabled", func() { + tx, err := WalletProxy.SetMonolith2FA(Owner.TransactOpts(ethertest.WithGasLimit(60000))) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("monolith2FA already enabled")) + }) + + It("should NOT allow a non-owner to set personal 2FA", func() { + tx, err := WalletProxy.SetPersonal2FA(Controller.TransactOpts(ethertest.WithGasLimit(60000)), common.HexToAddress(("0x1"))) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not owner")) + }) + + It("should NOT allow a non-owner to set Monolith 2FA", func() { + tx, err := WalletProxy.SetMonolith2FA(Controller.TransactOpts(ethertest.WithGasLimit(60000))) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not owner")) + }) + + It("should NOT allow to set the personal 2FA to address 0x0", func() { + tx, err := WalletProxy.SetPersonal2FA(Owner.TransactOpts(ethertest.WithGasLimit(60000)), common.HexToAddress(("0x0"))) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("2FA cannot be set to zero")) + }) + + It("should NOT allow to set the personal 2FA to the same address", func() { + tx, err := WalletProxy.SetPersonal2FA(Owner.TransactOpts(ethertest.WithGasLimit(60000)), Owner.Address()) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + returnData, _ := ethCall(tx) + tx, err = WalletProxy.SetPersonal2FA(Owner.TransactOpts(ethertest.WithGasLimit(60000)), Owner.Address()) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ = ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("address already set")) + }) + + It("should fail if monolith 2FA is already enabled", func() { + tx, err := WalletProxy.SetMonolith2FA(Owner.TransactOpts(ethertest.WithGasLimit(60000))) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("monolith2FA already enabled")) + }) + + When("the owner submits a whitelist addition", func() { + BeforeEach(func() { + tx, err := WalletProxy.SetWhitelist(Owner.TransactOpts(), []common.Address{common.HexToAddress("0x1")}) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + + tx, err = WalletProxy.SubmitWhitelistAddition(Owner.TransactOpts(), []common.Address{RandomAccount.Address()}) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + When("the a random account tries to confirm the addition to the whitelist", func() { + It("should fail", func() { + pwl, err := WalletProxy.PendingWhitelistAddition(nil) + Expect(err).ToNot(HaveOccurred()) + hash, err := WalletProxy.CalculateHash(nil, pwl) + Expect(err).ToNot(HaveOccurred()) + tx, err := WalletProxy.CancelWhitelistAddition(RandomAccount.TransactOpts(ethertest.WithGasLimit(500000)), hash) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("only owner or 2FA")) + }) + }) + + When("the controller tries to confirm the addition to the whitelist", func() { + It("should succeed", func() { + pwl, err := WalletProxy.PendingWhitelistAddition(nil) + Expect(err).ToNot(HaveOccurred()) + hash, err := WalletProxy.CalculateHash(nil, pwl) + Expect(err).ToNot(HaveOccurred()) + tx, err := WalletProxy.CancelWhitelistAddition(Controller.TransactOpts(), hash) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + }) + }) + + When("the owner submits a daily limit of 12K $USD", func() { + BeforeEach(func() { + tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(12000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + When("Monolith opt-out is NOT enabled and controller confirms", func() { + It("should succeed", func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(), EthToWei(12000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("should fail when a random account tries to confirm", func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(RandomAccount.TransactOpts(ethertest.WithGasLimit(80000)), EthToWei(12000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not controller")) + }) + }) + + When("Monolith opt-out is enabled and 2FA is a random account", func() { + BeforeEach(func() { + tx, err := WalletProxy.SetPersonal2FA(Owner.TransactOpts(), RandomAccount.Address()) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("should be false", func() { + m2fa, err := WalletProxy.Monolith2FA(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(m2fa).To(BeFalse()) + }) + + It("should set the 2FA address", func() { + p2fa, err := WalletProxy.Personal2FA(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(p2fa).To(Equal(RandomAccount.Address())) + }) + + It("Should emit a SetPersonal2Fa event", func() { + it, err := WalletProxy.FilterSetPersonal2FA(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + Expect(evt.Sender).To(Equal(Owner.Address())) + Expect(evt.P2FA).To(Equal(RandomAccount.Address())) + }) + + It("should fail when controller tries to confirm", func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(80000)), EthToWei(12000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not personal 2FA")) + }) + + When("the owner set Monlith 2FA again", func() { + BeforeEach(func() { + tx, err := WalletProxy.SetMonolith2FA(Owner.TransactOpts()) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("should be true", func() { + m2fa, err := WalletProxy.Monolith2FA(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(m2fa).To(BeTrue()) + }) + + It("should set the 2FA address to 0", func() { + p2fa, err := WalletProxy.Personal2FA(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(p2fa).To(Equal(common.HexToAddress("0x0"))) + }) + It("Should emit a SetMonolith2FA event", func() { + it, err := WalletProxy.FilterSetMonolith2FA(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + Expect(evt.Sender).To(Equal(Owner.Address())) + }) + + It("should succeed when the controller confirms the limit update", func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(), EthToWei(12000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("should fail when a random account tries to confirm", func() { + tx, err := WalletProxy.ConfirmDailyLimitUpdate(RandomAccount.TransactOpts(ethertest.WithGasLimit(80000)), EthToWei(12000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not controller")) + }) + }) + + When("the random account confirms the new limit", func() { + BeforeEach(func() { + //tx, err := WalletProxy.SetPersonal2FA(Owner.TransactOpts(), RandomAccount.Address()) + //Expect(err).ToNot(HaveOccurred()) + //Backend.Commit() + //Expect(isSuccessful(tx)).To(BeTrue()) + + tx, err := WalletProxy.ConfirmDailyLimitUpdate(RandomAccount.TransactOpts(), EthToWei(12000)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("should have 12K $USD available for spending", func() { + tl, err := WalletProxy.DailyLimitAvailable(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(tl.String()).To(Equal(EthToWei(12000).String())) + }) + + It("Should emit a SetPersonal2FA event", func() { + it, err := WalletProxy.FilterSetPersonal2FA(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + Expect(evt.Sender).To(Equal(Owner.Address())) + Expect(evt.P2FA).To(Equal(RandomAccount.Address())) + }) + + When("the owner submits a whitelist addition", func() { + BeforeEach(func() { + tx, err := WalletProxy.SetWhitelist(Owner.TransactOpts(ethertest.WithGasLimit(500000)), []common.Address{common.HexToAddress("0x1")}) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + + tx, err = WalletProxy.SubmitWhitelistAddition(Owner.TransactOpts(ethertest.WithGasLimit(500000)), []common.Address{RandomAccount.Address()}) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + When("the controller tries to confirm the addition to the whitelist", func() { + It("should fail", func() { + pwl, err := WalletProxy.PendingWhitelistAddition(nil) + Expect(err).ToNot(HaveOccurred()) + hash, err := WalletProxy.CalculateHash(nil, pwl) + Expect(err).ToNot(HaveOccurred()) + tx, err := WalletProxy.CancelWhitelistAddition(Controller.TransactOpts(ethertest.WithGasLimit(500000)), hash) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("only owner or 2FA")) + }) + }) + + When("the random account (set now as 2FA) tries to confirm the addition to the whitelist", func() { + It("should succeed", func() { + pwl, err := WalletProxy.PendingWhitelistAddition(nil) + Expect(err).ToNot(HaveOccurred()) + hash, err := WalletProxy.CalculateHash(nil, pwl) + Expect(err).ToNot(HaveOccurred()) + tx, err := WalletProxy.CancelWhitelistAddition(RandomAccount.TransactOpts(), hash) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + }) + + }) + + }) + + }) + }) +}) From dddb8a06da33074b26e75b55002dc627bce3759a Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:37:37 +0100 Subject: [PATCH 38/66] test/controller: update require statements and correct typos --- test/controller/add_admin_test.go | 16 ++++++++-------- test/controller/remove_admin_test.go | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/test/controller/add_admin_test.go b/test/controller/add_admin_test.go index 14dc1be4..30b3d52b 100644 --- a/test/controller/add_admin_test.go +++ b/test/controller/add_admin_test.go @@ -47,7 +47,7 @@ var _ = Describe("addAdmin", func() { When("controller owner calls AddAdmin with it's own address", func() { - It("should fail at the already owner requirenment", func() { + It("should fail at the already owner requirement", func() { tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(100000)), ControllerOwner.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -59,7 +59,7 @@ var _ = Describe("addAdmin", func() { When("controller owner calls AddAdmin with controller's address", func() { - It("should fail at already controller requirenment", func() { + It("should fail at already controller requirement", func() { tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(100000)), Controller.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -71,7 +71,7 @@ var _ = Describe("addAdmin", func() { When("controller owner calls AddAdmin with admin's address", func() { - It("should fail at already controller requirenment", func() { + It("should fail at already controller requirement", func() { tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(100000)), ControllerAdmin.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -82,7 +82,7 @@ var _ = Describe("addAdmin", func() { }) When("controller owner calls AddAdmin with 0 address", func() { - It("should fail at already controller requirenment", func() { + It("should fail at already controller requirement", func() { tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(100000)), common.HexToAddress("0x0")) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -94,24 +94,24 @@ var _ = Describe("addAdmin", func() { When("admin calls AddAdmin with a random address", func() { - It("should fail at the not owner requirenment", func() { + It("should fail at the not owner requirement", func() { tx, err := ControllerContract.AddAdmin(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(100000)), RandomAccount.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not an owner")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not owner")) }) }) When("controller calls AddAdmin with a random address", func() { - It("should fail at the not owner requirenment", func() { + It("should fail at the not owner requirement", func() { tx, err := ControllerContract.AddAdmin(Controller.TransactOpts(ethertest.WithGasLimit(100000)), RandomAccount.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not an owner")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not owner")) }) }) diff --git a/test/controller/remove_admin_test.go b/test/controller/remove_admin_test.go index 74cb4eeb..b0647579 100644 --- a/test/controller/remove_admin_test.go +++ b/test/controller/remove_admin_test.go @@ -67,7 +67,7 @@ var _ = Describe("removeAdmin", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not an owner")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not owner")) }) It("should NOT decrease number of admins", func() { From 28507e4673c03ff6b71c012958edd80e0237949e Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:38:06 +0100 Subject: [PATCH 39/66] test/token-whitelist: update require statements --- test/token-whitelist/set_token_flags_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/token-whitelist/set_token_flags_test.go b/test/token-whitelist/set_token_flags_test.go index cf53b373..d5b99219 100644 --- a/test/token-whitelist/set_token_flags_test.go +++ b/test/token-whitelist/set_token_flags_test.go @@ -208,7 +208,7 @@ var _ = Describe("setTokenRedeemable", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not an admin")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not admin")) }) }) }) From 9f86d4edf8f32cdc174f9a65cdb2a26037850b01 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:40:09 +0100 Subject: [PATCH 40/66] test/uninitialized: add onlyOwnerOr2FA check, remove onlyOwnerOrController check --- test/upgradeable/uninitialized_test.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/upgradeable/uninitialized_test.go b/test/upgradeable/uninitialized_test.go index 6e2daf89..5e0cbffb 100644 --- a/test/upgradeable/uninitialized_test.go +++ b/test/upgradeable/uninitialized_test.go @@ -25,31 +25,31 @@ var _ = Describe("uninitialized", func() { ProxyWallet, err = bindings.NewWallet(ProxyAddress, Backend) }) - It("Should fail when there's onlyOwnerOrController()", func() { - tx, err = ProxyWallet.TopUpGas(Owner.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(1000)) + It("Should fail when there's onlyOwnerOr2FA()", func() { + tx, err = ProxyWallet.TopUpGas(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(100)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("ENSResolvable not initialized")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("only owner or 2FA")) }) It("Should fail it when there's onlyOwnerOrSelf()", func() { - tx, err = ProxyWallet.SubmitDailyLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(1000)) + tx, err = ProxyWallet.SubmitDailyLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), EthToWei(1000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Only owner or self")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Not owner or self")) }) - It("Should fail it when there's onlyController()", func() { + It("Should fail it when there's only2FA()", func() { tx, err = ProxyWallet.ConfirmDailyLimitUpdate(Owner.TransactOpts(ethertest.WithGasLimit(100000)), big.NewInt(1000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("ENSResolvable not initialized")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not personal 2FA account")) }) It("Should fail it when there's onlyOwner()", func() { @@ -58,7 +58,7 @@ var _ = Describe("uninitialized", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not an owner")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not owner")) }) }) From 05e556e37c64f28e0723953dfc5f278980696c8c Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:40:36 +0100 Subject: [PATCH 41/66] test/transfer: update require statements --- test/wallet/transfer_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/wallet/transfer_test.go b/test/wallet/transfer_test.go index 8fa15e8e..86e50add 100644 --- a/test/wallet/transfer_test.go +++ b/test/wallet/transfer_test.go @@ -145,7 +145,7 @@ var _ = Describe("transfer", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Only owner or self")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Not owner or self")) }) }) @@ -157,7 +157,7 @@ var _ = Describe("transfer", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Only owner or self")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Not owner or self")) }) }) @@ -204,7 +204,7 @@ var _ = Describe("transfer", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Only owner or self")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Not owner or self")) }) }) @@ -215,7 +215,7 @@ var _ = Describe("transfer", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Only owner or self")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("Not owner or self")) }) }) From f69f47cd99e6ddbf4bfed7c954492732c7fa8e5b Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:41:33 +0100 Subject: [PATCH 42/66] contracts: update contract require statements --- contracts/internals/controllable.sol | 4 ++-- contracts/internals/ownable.sol | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/internals/controllable.sol b/contracts/internals/controllable.sol index 5838e9e0..c28a111f 100644 --- a/contracts/internals/controllable.sol +++ b/contracts/internals/controllable.sol @@ -35,13 +35,13 @@ contract Controllable is ENSResolvable { /// @notice Checks if message sender is a controller. modifier onlyController() { - require(_isController(msg.sender), "sender is not a controller"); + require(_isController(msg.sender), "sender is not controller"); _; } /// @notice Checks if message sender is an admin. modifier onlyAdmin() { - require(_isAdmin(msg.sender), "sender is not an admin"); + require(_isAdmin(msg.sender), "sender is not admin"); _; } diff --git a/contracts/internals/ownable.sol b/contracts/internals/ownable.sol index d70dd6b2..b87fd70b 100644 --- a/contracts/internals/ownable.sol +++ b/contracts/internals/ownable.sol @@ -35,7 +35,7 @@ contract Ownable is Initializable { /// @notice Reverts if called by any account other than the owner. modifier onlyOwner() { - require(_isOwner(msg.sender), "sender is not an owner"); + require(_isOwner(msg.sender), "sender is not owner"); _; } From 24361c1ed1e221951f90300c89a19e25a7ba0947 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:41:51 +0100 Subject: [PATCH 43/66] update pkg/bindings --- pkg/bindings/controller.go | 2 +- pkg/bindings/gasProxy.go | 2 +- pkg/bindings/holder.go | 2 +- pkg/bindings/licence.go | 2 +- .../mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/mocks/wallet.go | 2 +- pkg/bindings/oracle.go | 2 +- pkg/bindings/tokenWhitelist.go | 2 +- pkg/bindings/wallet.go | 365 +++++++++++++++++- pkg/bindings/walletCache.go | 2 +- pkg/bindings/walletDeployer.go | 2 +- 11 files changed, 373 insertions(+), 12 deletions(-) diff --git a/pkg/bindings/controller.go b/pkg/bindings/controller.go index 2aedfcaa..d387608f 100644 --- a/pkg/bindings/controller.go +++ b/pkg/bindings/controller.go @@ -31,7 +31,7 @@ var ( const ControllerABI = "[{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_ownerAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"AddedAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"name\":\"AddedController\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"RemovedAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"name\":\"RemovedController\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"Started\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"Stopped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isStopped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"removeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"start\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stop\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // ControllerBin is the compiled bytecode used for deploying new contracts. -var ControllerBin = "0x60806040523480156200001157600080fd5b506040516200179e3803806200179e833981810160405260208110156200003757600080fd5b5051620000468160006200004d565b50620001bc565b600054610100900460ff168062000069575062000069620001b6565b8062000078575060005460ff16155b620000b55760405162461bcd60e51b815260040180806020018281038252602e81526020018062001770602e913960400191505060405180910390fd5b600054610100900460ff16158015620000e1576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff9104166200015a57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015620001b1576000805461ff00191690555b505050565b303b1590565b6115a480620001cc6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526034602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6038805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60375490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b603354600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526034602052604090205460ff1690565b60355490565b60385460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603354600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603380546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b3360009081526034602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610ddc565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526034602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e1b565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603354600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806114d66023913960400191505060405180910390fd5b6033805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603354604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603380546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526036602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6038805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526034602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fc3565b6033546001600160a01b0390811691161490565b6001600160a01b03811660009081526034602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260346020908152604091829020805460ff191690556035805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526034602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806114546024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610ce45760405162461bcd60e51b81526004018080602001828103825260288152602001806115476028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b815260040180806020018281038252602581526020018061142f6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b81526004018080602001828103825260248152602001806114f96024913960400191505060405180910390fd5b6001600160a01b038116600081815260346020908152604091829020805460ff1916600190811790915560358054909101905581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e0257610dfd6001600160a01b03841682611083565b610e16565b610e166001600160a01b0383168483611168565b505050565b6001600160a01b03811660009081526034602052604090205460ff1615610e735760405162461bcd60e51b81526004018080602001828103825260248152602001806114546024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610ecb5760405162461bcd60e51b81526004018080602001828103825260288152602001806115476028913960400191505060405180910390fd5b610ed481610b4a565b15610f105760405162461bcd60e51b815260040180806020018281038252602581526020018061142f6025913960400191505060405180910390fd5b6001600160a01b038116610f555760405162461bcd60e51b81526004018080602001828103825260248152602001806114f96024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff1916600190811790915560378054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526036602052604090205460ff1661101a5760405162461bcd60e51b81526004018080602001828103825260248152602001806114b26024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff191690556037805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b804710156110d8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611123576040519150601f19603f3d011682016040523d82523d6000602084013e611128565b606091505b5050905080610e165760405162461bcd60e51b815260040180806020018281038252603a815260200180611478603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e16908490606061120a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112669092919063ffffffff16565b805190915015610e165780806020019051602081101561122957600080fd5b5051610e165760405162461bcd60e51b815260040180806020018281038252602a81526020018061151d602a913960400191505060405180910390fd5b6060611275848460008561127d565b949350505050565b606061128885611428565b6112d9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106113185780518252601f1990920191602091820191016112f9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461137a576040519150601f19603f3d011682016040523d82523d6000602084013e61137f565b606091505b509150915081156113935791506112759050565b8051156113a35780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113ed5781810151838201526020016113d5565b50505050905090810190601f16801561141a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656470726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a26469706673582212202182257d4d9531de09db5d326b89b63c8f0663f9ec0ef7d12cf6ba885a119fd464736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var ControllerBin = "0x60806040523480156200001157600080fd5b506040516200178f3803806200178f833981810160405260208110156200003757600080fd5b5051620000468160006200004d565b50620001bc565b600054610100900460ff168062000069575062000069620001b6565b8062000078575060005460ff16155b620000b55760405162461bcd60e51b815260040180806020018281038252602e81526020018062001761602e913960400191505060405180910390fd5b600054610100900460ff16158015620000e1576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff9104166200015a57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015620001b1576000805461ff00191690555b505050565b303b1590565b61159580620001cc6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103e9565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f9565b61011761046c565b610157610472565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047b565b61010d610526565b6101d7610621565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610630565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b0316610736565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610805565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bc565b61010d610a2f565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610abe565b6102da33610b3b565b806102f457503360009081526034602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6038805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60375490565b61039633610b3b565b6103dd576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6103e681610b4f565b50565b603354600160a01b900460ff1690565b6000610403610472565b1561044d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526034602052604090205460ff1690565b60355490565b60385460ff1690565b61048433610b3b565b6104cb576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6104d3610472565b1561051d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610c25565b61052f33610b3b565b610576576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166105d4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603380546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b3360009081526034602052604090205460ff1661068a576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b610692610472565b156106dc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106e7838383610dcd565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61073f33610b3b565b8061075957503360009081526034602052604090205460ff165b6107aa576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107b2610472565b156107fc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610e0c565b61080e33610b3b565b610855576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166108b3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f85760405162461bcd60e51b81526004018080602001828103825260238152602001806114c76023913960400191505060405180910390fd5b6033805460ff60a01b1916600160a01b831515021790558061095157604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603354604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603380546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c6610472565b15610a10576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526036602052604090205460ff1690565b610a3833610b3b565b610a7f576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6038805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ac733610b3b565b80610ae157503360009081526034602052604090205460ff165b610b32576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e681610fb4565b6033546001600160a01b0390811691161490565b6001600160a01b03811660009081526034602052604090205460ff16610bbc576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260346020908152604091829020805460ff191690556035805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526034602052604090205460ff1615610c7d5760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610cd55760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610cde81610b3b565b15610d1a5760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610d5f5760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260346020908152604091829020805460ff1916600190811790915560358054909101905581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610df357610dee6001600160a01b03841682611074565b610e07565b610e076001600160a01b0383168483611159565b505050565b6001600160a01b03811660009081526034602052604090205460ff1615610e645760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610ebc5760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610ec581610b3b565b15610f015760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610f465760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff1916600190811790915560378054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526036602052604090205460ff1661100b5760405162461bcd60e51b81526004018080602001828103825260248152602001806114a36024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff191690556037805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b804710156110c9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611114576040519150601f19603f3d011682016040523d82523d6000602084013e611119565b606091505b5050905080610e075760405162461bcd60e51b815260040180806020018281038252603a815260200180611469603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e0790849060606111fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112579092919063ffffffff16565b805190915015610e075780806020019051602081101561121a57600080fd5b5051610e075760405162461bcd60e51b815260040180806020018281038252602a81526020018061150e602a913960400191505060405180910390fd5b6060611266848460008561126e565b949350505050565b606061127985611419565b6112ca576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106113095780518252601f1990920191602091820191016112ea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461136b576040519150601f19603f3d011682016040523d82523d6000602084013e611370565b606091505b509150915081156113845791506112669050565b8051156113945780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113de5781810151838201526020016113c6565b50505050905090810190601f16801561140b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656470726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a2646970667358221220946c70690756fda725de0e461a7d0c97a52556112344e80ee0295fbdf4e4e9c964736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployController deploys a new Ethereum contract, binding an instance of Controller to it. func DeployController(auth *bind.TransactOpts, backend bind.ContractBackend, _ownerAddress_ common.Address) (common.Address, *types.Transaction, *Controller, error) { diff --git a/pkg/bindings/gasProxy.go b/pkg/bindings/gasProxy.go index 7b49bbd7..8efc4a59 100644 --- a/pkg/bindings/gasProxy.go +++ b/pkg/bindings/gasProxy.go @@ -37,7 +37,7 @@ type GasRefundableGasTokenParameters struct { const GasProxyABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"freeCallGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasRefundPerUnit\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structGasRefundable.GasTokenParameters\",\"name\":\"_gasTokenParameters\",\"type\":\"tuple\"}],\"name\":\"SetGasToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenParameters\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"freeCallGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasRefundPerUnit\",\"type\":\"uint256\"}],\"internalType\":\"structGasRefundable.GasTokenParameters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"freeCallGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasRefundPerUnit\",\"type\":\"uint256\"}],\"internalType\":\"structGasRefundable.GasTokenParameters\",\"name\":\"_parameters\",\"type\":\"tuple\"}],\"name\":\"setGasToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // GasProxyBin is the compiled bytecode used for deploying new contracts. -var GasProxyBin = "0x603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697603455603580549091166d4946c0e9f43f4dee607b0ef1fa1c17905560c060405261374a608081905261a0aa60a08190526036919091556037553480156200008b57600080fd5b5060405162000d4638038062000d46833981016040819052620000ae916200022c565b620000b982620000cc565b620000c4816200018e565b5050620002b4565b600054610100900460ff1680620000e85750620000e862000226565b80620000f7575060005460ff16155b6200011f5760405162461bcd60e51b8152600401620001169062000266565b60405180910390fd5b600054610100900460ff161580156200014b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200017757603380546001600160a01b0319166001600160a01b0384161790555b80156200018a576000805461ff00191690555b5050565b600054610100900460ff1680620001aa5750620001aa62000226565b80620001b9575060005460ff16155b620001d85760405162461bcd60e51b8152600401620001169062000266565b600054610100900460ff1615801562000204576000805460ff1961ff0019909116610100171660011790555b81156200017757603482905580156200018a576000805461ff00191690555050565b303b1590565b600080604083850312156200023f578182fd5b82516001600160a01b038116811462000256578283fd5b6020939093015192949293505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b610a8280620002c46000396000f3fe6080604052600436106100555760003560e01c80633686ba421461005a5780633f579f4214610085578063719d5c6f146100a55780637d73b231146100c7578063c91d59fe146100e9578063e2b4ce97146100fe575b600080fd5b34801561006657600080fd5b5061006f610120565b60405161007c9190610a26565b60405180910390f35b610098610093366004610698565b610143565b60405161007c91906108a2565b3480156100b157600080fd5b506100c56100c0366004610659565b610300565b005b3480156100d357600080fd5b506100dc610341565b60405161007c9190610808565b3480156100f557600080fd5b506100dc610350565b34801561010a57600080fd5b5061011361035f565b60405161007c9190610899565b61012861061c565b50604080518082019091526036548152603754602082015290565b606061014e33610365565b6101735760405162461bcd60e51b815260040161016a906109c1565b60405180910390fd5b60005a905060006060876001600160a01b03168787876040516101979291906107f8565b60006040518083038185875af1925050503d80600081146101d4576040519150601f19603f3d011682016040523d82523d6000602084013e6101d9565b606091505b5091509150816101fb5760405162461bcd60e51b815260040161016a906109f8565b7ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138888888885604051610232959493929190610839565b60405180910390a19250506000601036025a836152080103019050603560009054906101000a90046001600160a01b03166001600160a01b0316636366b93660366001015460366000015484018161028657fe5b046040518263ffffffff1660e01b81526004016102a39190610899565b602060405180830381600087803b1580156102bd57600080fd5b505af11580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610786565b505050949350505050565b610309336103f3565b6103255760405162461bcd60e51b815260040161016a906108ec565b61033d826103383684900384018461073c565b61042b565b5050565b6033546001600160a01b031690565b6035546001600160a01b031690565b60345490565b60006103726034546104f6565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040161039d9190610808565b60206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed919061071c565b92915050565b60006104006034546104f6565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040161039d9190610808565b6001600160a01b0382166104515760405162461bcd60e51b815260040161016a90610953565b805161046f5760405162461bcd60e51b815260040161016a9061098a565b60208101516104905760405162461bcd60e51b815260040161016a9061091c565b603580546001600160a01b0319166001600160a01b038416179055805160365560208101516037556040517fd82ec20581833e6b763037b2f1082d6b9c2ba3e8dbaaf4aab4c2b4c49d99fbb5906104ea908490849061081c565b60405180910390a15050565b6033546000906001600160a01b03166105215760405162461bcd60e51b815260040161016a906108b5565b603354604051630178b8bf60e01b81526001600160a01b0390911690630178b8bf90610551908590600401610899565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190610636565b6001600160a01b0316633b3b57de836040518263ffffffff1660e01b81526004016105cc9190610899565b60206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610636565b604051806040016040528060008152602001600081525090565b600060208284031215610647578081fd5b815161065281610a34565b9392505050565b600080828403606081121561066c578182fd5b833561067781610a34565b92506040601f198201121561068a578182fd5b506020830190509250929050565b600080600080606085870312156106ad578182fd5b84356106b881610a34565b935060208501359250604085013567ffffffffffffffff808211156106db578384fd5b818701915087601f8301126106ee578384fd5b8135818111156106fc578485fd5b88602082850101111561070d578485fd5b95989497505060200194505050565b60006020828403121561072d578081fd5b81518015158114610652578182fd5b60006040828403121561074d578081fd5b6040516040810181811067ffffffffffffffff8211171561076c578283fd5b604052823581526020928301359281019290925250919050565b600060208284031215610797578081fd5b5051919050565b60008151808452815b818110156107c3576020818501810151868301820152016107a7565b818111156107d45782602083870101525b50601f01601f19169290920160200192915050565b80518252602090810151910152565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b03831681526060810161065260208301846107e9565b6001600160a01b03861681526020810185905260806040820181905281018390526000838560a08401378060a08584010152601f19601f850116820160a083820301606084015261088d60a082018561079e565b98975050505050505050565b90815260200190565b600060208252610652602083018461079e565b6020808252601d908201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604082015260600190565b60208082526016908201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604082015260600190565b60208082526018908201527f67617320726566756e642070657220756e697420697320300000000000000000604082015260600190565b60208082526018908201527f67617320746f6b656e2061646472657373206973203078300000000000000000604082015260600190565b60208082526017908201527f667265652063616c6c2067617320636f73742069732030000000000000000000604082015260600190565b6020808252601a908201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604082015260600190565b602080825260149082015273195e1d195c9b985b0818d85b1b0819985a5b195960621b604082015260600190565b604081016103ed82846107e9565b6001600160a01b0381168114610a4957600080fd5b5056fea26469706673582212201cd6755109c572e0d618a99386ec1740d43212ab3695a3f30fb62a5ec14b77d964736f6c634300060c0033" +var GasProxyBin = "0x603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697603455603580549091166d4946c0e9f43f4dee607b0ef1fa1c17905560c060405261374a608081905261a0aa60a08190526036919091556037553480156200008b57600080fd5b5060405162000d4338038062000d43833981016040819052620000ae916200022c565b620000b982620000cc565b620000c4816200018e565b5050620002b4565b600054610100900460ff1680620000e85750620000e862000226565b80620000f7575060005460ff16155b6200011f5760405162461bcd60e51b8152600401620001169062000266565b60405180910390fd5b600054610100900460ff161580156200014b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200017757603380546001600160a01b0319166001600160a01b0384161790555b80156200018a576000805461ff00191690555b5050565b600054610100900460ff1680620001aa5750620001aa62000226565b80620001b9575060005460ff16155b620001d85760405162461bcd60e51b8152600401620001169062000266565b600054610100900460ff1615801562000204576000805460ff1961ff0019909116610100171660011790555b81156200017757603482905580156200018a576000805461ff00191690555050565b303b1590565b600080604083850312156200023f578182fd5b82516001600160a01b038116811462000256578283fd5b6020939093015192949293505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b610a7f80620002c46000396000f3fe6080604052600436106100555760003560e01c80633686ba421461005a5780633f579f4214610085578063719d5c6f146100a55780637d73b231146100c7578063c91d59fe146100e9578063e2b4ce97146100fe575b600080fd5b34801561006657600080fd5b5061006f610120565b60405161007c9190610a23565b60405180910390f35b610098610093366004610698565b610143565b60405161007c91906108a2565b3480156100b157600080fd5b506100c56100c0366004610659565b610300565b005b3480156100d357600080fd5b506100dc610341565b60405161007c9190610808565b3480156100f557600080fd5b506100dc610350565b34801561010a57600080fd5b5061011361035f565b60405161007c9190610899565b61012861061c565b50604080518082019091526036548152603754602082015290565b606061014e33610365565b6101735760405162461bcd60e51b815260040161016a906109ec565b60405180910390fd5b60005a905060006060876001600160a01b03168787876040516101979291906107f8565b60006040518083038185875af1925050503d80600081146101d4576040519150601f19603f3d011682016040523d82523d6000602084013e6101d9565b606091505b5091509150816101fb5760405162461bcd60e51b815260040161016a906109be565b7ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138888888885604051610232959493929190610839565b60405180910390a19250506000601036025a836152080103019050603560009054906101000a90046001600160a01b03166001600160a01b0316636366b93660366001015460366000015484018161028657fe5b046040518263ffffffff1660e01b81526004016102a39190610899565b602060405180830381600087803b1580156102bd57600080fd5b505af11580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610786565b505050949350505050565b610309336103f3565b6103255760405162461bcd60e51b815260040161016a90610923565b61033d826103383684900384018461073c565b61042b565b5050565b6033546001600160a01b031690565b6035546001600160a01b031690565b60345490565b60006103726034546104f6565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040161039d9190610808565b60206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed919061071c565b92915050565b60006104006034546104f6565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040161039d9190610808565b6001600160a01b0382166104515760405162461bcd60e51b815260040161016a90610950565b805161046f5760405162461bcd60e51b815260040161016a90610987565b60208101516104905760405162461bcd60e51b815260040161016a906108ec565b603580546001600160a01b0319166001600160a01b038416179055805160365560208101516037556040517fd82ec20581833e6b763037b2f1082d6b9c2ba3e8dbaaf4aab4c2b4c49d99fbb5906104ea908490849061081c565b60405180910390a15050565b6033546000906001600160a01b03166105215760405162461bcd60e51b815260040161016a906108b5565b603354604051630178b8bf60e01b81526001600160a01b0390911690630178b8bf90610551908590600401610899565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190610636565b6001600160a01b0316633b3b57de836040518263ffffffff1660e01b81526004016105cc9190610899565b60206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610636565b604051806040016040528060008152602001600081525090565b600060208284031215610647578081fd5b815161065281610a31565b9392505050565b600080828403606081121561066c578182fd5b833561067781610a31565b92506040601f198201121561068a578182fd5b506020830190509250929050565b600080600080606085870312156106ad578182fd5b84356106b881610a31565b935060208501359250604085013567ffffffffffffffff808211156106db578384fd5b818701915087601f8301126106ee578384fd5b8135818111156106fc578485fd5b88602082850101111561070d578485fd5b95989497505060200194505050565b60006020828403121561072d578081fd5b81518015158114610652578182fd5b60006040828403121561074d578081fd5b6040516040810181811067ffffffffffffffff8211171561076c578283fd5b604052823581526020928301359281019290925250919050565b600060208284031215610797578081fd5b5051919050565b60008151808452815b818110156107c3576020818501810151868301820152016107a7565b818111156107d45782602083870101525b50601f01601f19169290920160200192915050565b80518252602090810151910152565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b03831681526060810161065260208301846107e9565b6001600160a01b03861681526020810185905260806040820181905281018390526000838560a08401378060a08584010152601f19601f850116820160a083820301606084015261088d60a082018561079e565b98975050505050505050565b90815260200190565b600060208252610652602083018461079e565b6020808252601d908201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604082015260600190565b60208082526018908201527f67617320726566756e642070657220756e697420697320300000000000000000604082015260600190565b60208082526013908201527239b2b73232b91034b9903737ba1030b236b4b760691b604082015260600190565b60208082526018908201527f67617320746f6b656e2061646472657373206973203078300000000000000000604082015260600190565b60208082526017908201527f667265652063616c6c2067617320636f73742069732030000000000000000000604082015260600190565b602080825260149082015273195e1d195c9b985b0818d85b1b0819985a5b195960621b604082015260600190565b60208082526018908201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604082015260600190565b604081016103ed82846107e9565b6001600160a01b0381168114610a4657600080fd5b5056fea26469706673582212202be31d3f9cbcf7e335580bd7c94a840b927f1a585e66c796ba749fb172cfd8d364736f6c634300060c0033" // DeployGasProxy deploys a new Ethereum contract, binding an instance of GasProxy to it. func DeployGasProxy(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *GasProxy, error) { diff --git a/pkg/bindings/holder.go b/pkg/bindings/holder.go index f31d24db..4b69a48c 100644 --- a/pkg/bindings/holder.go +++ b/pkg/bindings/holder.go @@ -31,7 +31,7 @@ var ( const HolderABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_burnerContract_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"CashAndBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_nonRedeemableAddresses\",\"type\":\"address[]\"}],\"name\":\"nonRedeemableTokenClaim\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" // HolderBin is the compiled bytecode used for deploying new contracts. -var HolderBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b506040516200145c3803806200145c83398181016040526080811015620000a057600080fd5b5080516020820151604083015160609093015191929091620000c28362000102565b620000cd81620001d9565b620000d8826200028f565b5050603680546001600160a01b0319166001600160a01b039390931692909217909155506200034b565b600054610100900460ff16806200011e57506200011e62000345565b806200012d575060005460ff16155b6200016a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142e602e913960400191505060405180910390fd5b600054610100900460ff1615801562000196576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001c257603380546001600160a01b0319166001600160a01b0384161790555b8015620001d5576000805461ff00191690555b5050565b600054610100900460ff1680620001f55750620001f562000345565b8062000204575060005460ff16155b620002415760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142e602e913960400191505060405180910390fd5b600054610100900460ff161580156200026d576000805460ff1961ff0019909116610100171660011790555b8115620001c25760348290558015620001d5576000805461ff00191690555050565b600054610100900460ff1680620002ab5750620002ab62000345565b80620002ba575060005460ff16155b620002f75760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142e602e913960400191505060405180910390fd5b600054610100900460ff1615801562000323576000805460ff1961ff0019909116610100171660011790555b8115620001c25760358290558015620001d5576000805461ff00191690555050565b303b1590565b6110d3806200035b6000396000f3fe6080604052600436106100595760003560e01c806327810b6e1461009f57806340f6a70f146100d05780637d73b23114610171578063877337b0146101865780639dc29fac146101ad578063e2b4ce97146101e65761009a565b3661009a576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b600080fd5b3480156100ab57600080fd5b506100b46101fb565b604080516001600160a01b039092168252519081900360200190f35b3480156100dc57600080fd5b5061015d600480360360408110156100f357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011e57600080fd5b82018360208201111561013057600080fd5b8035906020019184602083028401116401000000008311171561015257600080fd5b50909250905061020a565b604080519115158252519081900360200190f35b34801561017d57600080fd5b506100b46103bd565b34801561019257600080fd5b5061019b6103cc565b60408051918252519081900360200190f35b3480156101b957600080fd5b5061015d600480360360408110156101d057600080fd5b506001600160a01b0381351690602001356103d2565b3480156101f257600080fd5b5061019b6105ac565b6036546001600160a01b031690565b6000610215336105b2565b61025f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b828110156103b25761028e84848381811061027957fe5b905060200201356001600160a01b031661063f565b156102e0576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006103068585848181106102f157fe5b905060200201356001600160a01b0316610658565b905080156103a9576103348686868581811061031e57fe5b905060200201356001600160a01b0316836106e9565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061036257fe5b905060200201356001600160a01b03168360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a15b50600101610262565b506001949350505050565b6033546001600160a01b031690565b60355490565b6036546000906001600160a01b0316331461041e5760405162461bcd60e51b815260040180806020018281038252602181526020018061107d6021913960400191505060405180910390fd5b8161042b575060016105a6565b60006104b183603660009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561047f57600080fd5b505afa158015610493573d6000803e3d6000fd5b505050506040513d60208110156104a957600080fd5b505190610728565b905060606104bd610789565b905060005b815181101561059e5760006104e98383815181106104dc57fe5b6020026020010151610658565b9050801561059557600061050785610501848a61089c565b906108f5565b90506105278885858151811061051957fe5b6020026020010151836106e9565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061055557fe5b60200260200101518360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104c2565b506001925050505b92915050565b60345490565b60006105bf603454610937565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561060b57600080fd5b505afa15801561061f573d6000803e3d6000fd5b505050506040513d602081101561063557600080fd5b505190505b919050565b60008061064b83610a58565b5098975050505050505050565b60006001600160a01b038216156106e257604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156106af57600080fd5b505afa1580156106c3573d6000803e3d6000fd5b505050506040513d60208110156106d957600080fd5b5051905061063a565b504761063a565b6001600160a01b03821661070f5761070a6001600160a01b03841682610be3565b610723565b6107236001600160a01b0383168483610cc8565b505050565b600082820183811015610782576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060610796603554610937565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561080b57600080fd5b810190808051604051939291908464010000000082111561082b57600080fd5b90830190602082018581111561084057600080fd5b825186602082028301116401000000008211171561085d57600080fd5b82525081516020918201928201910280838360005b8381101561088a578181015183820152602001610872565b50505050905001604052505050905090565b6000826108ab575060006105a6565b828202828482816108b857fe5b04146107825760405162461bcd60e51b81526004018080602001828103825260218152602001806110326021913960400191505060405180910390fd5b600061078283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d1a565b6033546000906001600160a01b0316610997576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109e357600080fd5b505afa1580156109f7573d6000803e3d6000fd5b505050506040513d6020811015610a0d57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561060b57600080fd5b6060600080600080600080610a6e603554610937565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610aba57600080fd5b505afa158015610ace573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610af757600080fd5b8101908080516040519392919084640100000000821115610b1757600080fd5b908301906020820185811115610b2c57600080fd5b8251640100000000811182820188101715610b4657600080fd5b82525081516020918201929091019080838360005b83811015610b73578181015183820152602001610b5b565b50505050905090810190601f168015610ba05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b80471015610c38576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610c83576040519150601f19603f3d011682016040523d82523d6000602084013e610c88565b606091505b50509050806107235760405162461bcd60e51b815260040180806020018281038252603a815260200180610ff8603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610723908490610dbc565b60008183610da65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d6b578181015183820152602001610d53565b50505050905090810190601f168015610d985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610db257fe5b0495945050505050565b6060610e11826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e6d9092919063ffffffff16565b80519091501561072357808060200190516020811015610e3057600080fd5b50516107235760405162461bcd60e51b815260040180806020018281038252602a815260200180611053602a913960400191505060405180910390fd5b6060610e7c8484600085610e84565b949350505050565b6060610e8f85610ff1565b610ee0576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310610f1f5780518252601f199092019160209182019101610f00565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f81576040519150601f19603f3d011682016040523d82523d6000602084013e610f86565b606091505b50915091508115610f9a579150610e7c9050565b805115610faa5780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610d6b578181015183820152602001610d53565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a26469706673582212202ae039c8a58b2fd61d2031ca056f15bad3873ccdd362ec172233ab3d10b0406e64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var HolderBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b50604051620014593803806200145983398181016040526080811015620000a057600080fd5b5080516020820151604083015160609093015191929091620000c28362000102565b620000cd81620001d9565b620000d8826200028f565b5050603680546001600160a01b0319166001600160a01b039390931692909217909155506200034b565b600054610100900460ff16806200011e57506200011e62000345565b806200012d575060005460ff16155b6200016a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000196576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001c257603380546001600160a01b0319166001600160a01b0384161790555b8015620001d5576000805461ff00191690555b5050565b600054610100900460ff1680620001f55750620001f562000345565b8062000204575060005460ff16155b620002415760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff161580156200026d576000805460ff1961ff0019909116610100171660011790555b8115620001c25760348290558015620001d5576000805461ff00191690555050565b600054610100900460ff1680620002ab5750620002ab62000345565b80620002ba575060005460ff16155b620002f75760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000323576000805460ff1961ff0019909116610100171660011790555b8115620001c25760358290558015620001d5576000805461ff00191690555050565b303b1590565b6110d0806200035b6000396000f3fe6080604052600436106100595760003560e01c806327810b6e1461009f57806340f6a70f146100d05780637d73b23114610171578063877337b0146101865780639dc29fac146101ad578063e2b4ce97146101e65761009a565b3661009a576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b600080fd5b3480156100ab57600080fd5b506100b46101fb565b604080516001600160a01b039092168252519081900360200190f35b3480156100dc57600080fd5b5061015d600480360360408110156100f357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011e57600080fd5b82018360208201111561013057600080fd5b8035906020019184602083028401116401000000008311171561015257600080fd5b50909250905061020a565b604080519115158252519081900360200190f35b34801561017d57600080fd5b506100b46103ba565b34801561019257600080fd5b5061019b6103c9565b60408051918252519081900360200190f35b3480156101b957600080fd5b5061015d600480360360408110156101d057600080fd5b506001600160a01b0381351690602001356103cf565b3480156101f257600080fd5b5061019b6105a9565b6036546001600160a01b031690565b6000610215336105af565b61025c576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b828110156103af5761028b84848381811061027657fe5b905060200201356001600160a01b031661063c565b156102dd576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006103038585848181106102ee57fe5b905060200201356001600160a01b0316610655565b905080156103a6576103318686868581811061031b57fe5b905060200201356001600160a01b0316836106e6565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035f57fe5b905060200201356001600160a01b03168360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a15b5060010161025f565b506001949350505050565b6033546001600160a01b031690565b60355490565b6036546000906001600160a01b0316331461041b5760405162461bcd60e51b815260040180806020018281038252602181526020018061107a6021913960400191505060405180910390fd5b81610428575060016105a3565b60006104ae83603660009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d60208110156104a657600080fd5b505190610725565b905060606104ba610786565b905060005b815181101561059b5760006104e68383815181106104d957fe5b6020026020010151610655565b90508015610592576000610504856104fe848a610899565b906108f2565b90506105248885858151811061051657fe5b6020026020010151836106e6565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061055257fe5b60200260200101518360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104bf565b506001925050505b92915050565b60345490565b60006105bc603454610934565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561060857600080fd5b505afa15801561061c573d6000803e3d6000fd5b505050506040513d602081101561063257600080fd5b505190505b919050565b60008061064883610a55565b5098975050505050505050565b60006001600160a01b038216156106df57604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b50519050610637565b5047610637565b6001600160a01b03821661070c576107076001600160a01b03841682610be0565b610720565b6107206001600160a01b0383168483610cc5565b505050565b60008282018381101561077f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060610793603554610934565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107cb57600080fd5b505afa1580156107df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561080857600080fd5b810190808051604051939291908464010000000082111561082857600080fd5b90830190602082018581111561083d57600080fd5b825186602082028301116401000000008211171561085a57600080fd5b82525081516020918201928201910280838360005b8381101561088757818101518382015260200161086f565b50505050905001604052505050905090565b6000826108a8575060006105a3565b828202828482816108b557fe5b041461077f5760405162461bcd60e51b815260040180806020018281038252602181526020018061102f6021913960400191505060405180910390fd5b600061077f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d17565b6033546000906001600160a01b0316610994576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109e057600080fd5b505afa1580156109f4573d6000803e3d6000fd5b505050506040513d6020811015610a0a57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561060857600080fd5b6060600080600080600080610a6b603554610934565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610af457600080fd5b8101908080516040519392919084640100000000821115610b1457600080fd5b908301906020820185811115610b2957600080fd5b8251640100000000811182820188101715610b4357600080fd5b82525081516020918201929091019080838360005b83811015610b70578181015183820152602001610b58565b50505050905090810190601f168015610b9d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b80471015610c35576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610c80576040519150601f19603f3d011682016040523d82523d6000602084013e610c85565b606091505b50509050806107205760405162461bcd60e51b815260040180806020018281038252603a815260200180610ff5603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610720908490610db9565b60008183610da35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d68578181015183820152602001610d50565b50505050905090810190601f168015610d955780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610daf57fe5b0495945050505050565b6060610e0e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e6a9092919063ffffffff16565b80519091501561072057808060200190516020811015610e2d57600080fd5b50516107205760405162461bcd60e51b815260040180806020018281038252602a815260200180611050602a913960400191505060405180910390fd5b6060610e798484600085610e81565b949350505050565b6060610e8c85610fee565b610edd576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310610f1c5780518252601f199092019160209182019101610efd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f7e576040519150601f19603f3d011682016040523d82523d6000602084013e610f83565b606091505b50915091508115610f97579150610e799050565b805115610fa75780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610d68578181015183820152602001610d50565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a264697066735822122094060d9ec25d495c3977feea989621a67250c18b2becc1c007c573542cedcfeb64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployHolder deploys a new Ethereum contract, binding an instance of Holder to it. func DeployHolder(auth *bind.TransactOpts, backend bind.ContractBackend, _burnerContract_ common.Address, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Holder, error) { diff --git a/pkg/bindings/licence.go b/pkg/bindings/licence.go index bc9ce1ec..53b7a328 100644 --- a/pkg/bindings/licence.go +++ b/pkg/bindings/licence.go @@ -31,7 +31,7 @@ var ( const LicenceABI = "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_licence_\",\"type\":\"uint256\"},{\"internalType\":\"addresspayable\",\"name\":\"_float_\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_holder_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tknAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TransferredToCryptoFloat\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TransferredToTokenHolder\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newFloat\",\"type\":\"address\"}],\"name\":\"UpdatedCryptoFloat\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newAmount\",\"type\":\"uint256\"}],\"name\":\"UpdatedLicenceAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newDAO\",\"type\":\"address\"}],\"name\":\"UpdatedLicenceDAO\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newTKN\",\"type\":\"address\"}],\"name\":\"UpdatedTKNContractAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newHolder\",\"type\":\"address\"}],\"name\":\"UpdatedTokenHolder\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_AMOUNT_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_AMOUNT_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cryptoFloat\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"floatLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"holderLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceAmountScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceDAO\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceDAOLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"load\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockFloat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockHolder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockLicenceDAO\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockTKNContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tknContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tknContractAddressLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenHolder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_newFloat\",\"type\":\"address\"}],\"name\":\"updateFloat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_newHolder\",\"type\":\"address\"}],\"name\":\"updateHolder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newAmount\",\"type\":\"uint256\"}],\"name\":\"updateLicenceAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newDAO\",\"type\":\"address\"}],\"name\":\"updateLicenceDAO\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newTKN\",\"type\":\"address\"}],\"name\":\"updateTKNContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" // LicenceBin is the compiled bytecode used for deploying new contracts. -var LicenceBin = "0x6080604052603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034556035805490911673aaaf91d9b90df800df4f55c205fd6989c977e73a1790553480156200007857600080fd5b50604051620019e8380380620019e8833981810160405260c08110156200009e57600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909160018610801590620000d757506103e88611155b62000129576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6200013482620001a2565b6200013f8162000279565b6039869055603680546001600160a01b038088166001600160a01b0319928316179092556037805487841692169190911790558316156200019657603580546001600160a01b0319166001600160a01b0385161790555b50505050505062000335565b600054610100900460ff1680620001be5750620001be6200032f565b80620001cd575060005460ff16155b6200020a5760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff1615801562000236576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200026257603380546001600160a01b0319166001600160a01b0384161790555b801562000275576000805461ff00191690555b5050565b600054610100900460ff1680620002955750620002956200032f565b80620002a4575060005460ff16155b620002e15760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff161580156200030d576000805460ff1961ff0019909116610100171660011790555b811562000262576034829055801562000275576000805461ff00191690555050565b303b1590565b61167580620003456000396000f3fe60806040526004361061014f5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd67146103af578063d1696b16146103e2578063e2b4ce97146103f7578063e30c5fa81461040c578063e3d8024214610421578063f15ff4551461045457610156565b8063996cba681461030357806399a5e1d014610346578063a036ba601461035b578063ac904c6314610370578063ca0e2e2014610385578063d08b4ecc1461039a57610156565b806342719faa1161010857806342719faa1461023e5780634ac22b3c1461027157806368ce74e7146102865780637d73b231146102b0578063837c70ef146102c5578063940b9c3b146102ee57610156565b80630bf25c911461015b5780630d42e82f146101725780631b3c96b4146101a55780633a7afe02146101d15780633acec15f14610202578063420a83e71461022957610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610469565b005b34801561017e57600080fd5b506101706004803603602081101561019557600080fd5b50356001600160a01b03166104c6565b610170600480360360408110156101bb57600080fd5b506001600160a01b0381351690602001356105ac565b3480156101dd57600080fd5b506101e66107de565b604080516001600160a01b039092168252519081900360200190f35b34801561020e57600080fd5b506102176107ed565b60408051918252519081900360200190f35b34801561023557600080fd5b506101e66107f2565b34801561024a57600080fd5b506101706004803603602081101561026157600080fd5b50356001600160a01b0316610801565b34801561027d57600080fd5b506101706108f7565b34801561029257600080fd5b50610170600480360360208110156102a957600080fd5b5035610954565b3480156102bc57600080fd5b506101e6610a52565b3480156102d157600080fd5b506102da610a61565b604080519115158252519081900360200190f35b3480156102fa57600080fd5b506102da610a71565b34801561030f57600080fd5b506101706004803603606081101561032657600080fd5b506001600160a01b03813581169160208101359091169060400135610a81565b34801561035257600080fd5b506101e6610b23565b34801561036757600080fd5b506101e6610b32565b34801561037c57600080fd5b50610217610b41565b34801561039157600080fd5b50610217610b47565b3480156103a657600080fd5b50610170610b4d565b3480156103bb57600080fd5b50610170600480360360208110156103d257600080fd5b50356001600160a01b0316610baa565b3480156103ee57600080fd5b50610170610c92565b34801561040357600080fd5b50610217610cef565b34801561041857600080fd5b506102da610cf5565b34801561042d57600080fd5b506101706004803603602081101561044457600080fd5b50356001600160a01b0316610d05565b34801561046057600080fd5b506102da610deb565b61047233610dfb565b6104b1576040805162461bcd60e51b815260206004820152601660248201526000805160206115d5833981519152604482015290519081900360640190fd5b6038805460ff60b81b1916600160b81b179055565b6104cf33610dfb565b61050e576040805162461bcd60e51b815260206004820152601660248201526000805160206115d5833981519152604482015290519081900360640190fd5b610516610a61565b15610558576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60355481906001600160a01b03848116911614156105e5576036546105e0906001600160a01b038581169133911684610e86565b610786565b61060a6103e8603954016106046103e885610ee690919063ffffffff16565b90610f48565b905060006106188383610f8a565b90506001600160a01b0384161561066657603754610645906001600160a01b038681169133911684610e86565b603654610661906001600160a01b038681169133911685610e86565b610731565b8234146106ba576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6037546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156106f4573d6000803e3d6000fd5b506036546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561072f573d6000803e3d6000fd5b505b603754604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b603654604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6038546001600160a01b031690565b600181565b6037546001600160a01b031690565b61080a33610dfb565b610849576040805162461bcd60e51b815260206004820152601660248201526000805160206115d5833981519152604482015290519081900360640190fd5b610851610deb565b156108a3576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b603780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090033610dfb565b61093f576040805162461bcd60e51b815260206004820152601660248201526000805160206115d5833981519152604482015290519081900360640190fd5b6038805460ff60b01b1916600160b01b179055565b6038546001600160a01b031633146109b3576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109c657506103e88111155b610a17576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60398190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6033546001600160a01b031690565b603854600160b81b900460ff1690565b603854600160a01b900460ff1690565b610a8a33610dfb565b610ac9576040805162461bcd60e51b815260206004820152601660248201526000805160206115d5833981519152604482015290519081900360640190fd5b610ad4838383610fcc565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6035546001600160a01b031690565b6036546001600160a01b031690565b60395490565b6103e881565b610b5633610dfb565b610b95576040805162461bcd60e51b815260206004820152601660248201526000805160206115d5833981519152604482015290519081900360640190fd5b6038805460ff60a01b1916600160a01b179055565b610bb333610dfb565b610bf2576040805162461bcd60e51b815260206004820152601660248201526000805160206115d5833981519152604482015290519081900360640190fd5b610bfa610a71565b15610c3e576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b603680546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610c9b33610dfb565b610cda576040805162461bcd60e51b815260206004820152601660248201526000805160206115d5833981519152604482015290519081900360640190fd5b6038805460ff60a81b1916600160a81b179055565b60345490565b603854600160b01b900460ff1690565b610d0e33610dfb565b610d4d576040805162461bcd60e51b815260206004820152601660248201526000805160206115d5833981519152604482015290519081900360640190fd5b610d55610cf5565b15610d97576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b603854600160a81b900460ff1690565b6000610e0860345461100b565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e5457600080fd5b505afa158015610e68573d6000803e3d6000fd5b505050506040513d6020811015610e7e57600080fd5b505192915050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ee090859061112c565b50505050565b600082610ef557506000610f42565b82820282848281610f0257fe5b0414610f3f5760405162461bcd60e51b81526004018080602001828103825260218152602001806115f56021913960400191505060405180910390fd5b90505b92915050565b6000610f3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111dd565b6000610f3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061127f565b6001600160a01b038216610ff257610fed6001600160a01b038416826112d9565b611006565b6110066001600160a01b03831684836113be565b505050565b6033546000906001600160a01b031661106b576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110b757600080fd5b505afa1580156110cb573d6000803e3d6000fd5b505050506040513d60208110156110e157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e5457600080fd5b6060611181826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114109092919063ffffffff16565b805190915015611006578080602001905160208110156111a057600080fd5b50516110065760405162461bcd60e51b815260040180806020018281038252602a815260200180611616602a913960400191505060405180910390fd5b600081836112695760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578181015183820152602001611216565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161127557fe5b0495945050505050565b600081848411156112d15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561122e578181015183820152602001611216565b505050900390565b8047101561132e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611379576040519150601f19603f3d011682016040523d82523d6000602084013e61137e565b606091505b50509050806110065760405162461bcd60e51b815260040180806020018281038252603a81526020018061159b603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261100690849061112c565b606061141f8484600085611427565b949350505050565b606061143285611594565b611483576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106114c25780518252601f1990920191602091820191016114a3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611524576040519150601f19603f3d011682016040523d82523d6000602084013e611529565b606091505b5091509150811561153d57915061141f9050565b80511561154d5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561122e578181015183820152602001611216565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656473656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220c837e1cc343efe2a332d29c185d7cf749962b63a756d2c1039036922403ac70c64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var LicenceBin = "0x6080604052603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034556035805490911673aaaf91d9b90df800df4f55c205fd6989c977e73a1790553480156200007857600080fd5b50604051620019e8380380620019e8833981810160405260c08110156200009e57600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909160018610801590620000d757506103e88611155b62000129576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6200013482620001a2565b6200013f8162000279565b6039869055603680546001600160a01b038088166001600160a01b0319928316179092556037805487841692169190911790558316156200019657603580546001600160a01b0319166001600160a01b0385161790555b50505050505062000335565b600054610100900460ff1680620001be5750620001be6200032f565b80620001cd575060005460ff16155b6200020a5760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff1615801562000236576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200026257603380546001600160a01b0319166001600160a01b0384161790555b801562000275576000805461ff00191690555b5050565b600054610100900460ff1680620002955750620002956200032f565b80620002a4575060005460ff16155b620002e15760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff161580156200030d576000805460ff1961ff0019909116610100171660011790555b811562000262576034829055801562000275576000805461ff00191690555050565b303b1590565b61167580620003456000396000f3fe60806040526004361061014f5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd67146103af578063d1696b16146103e2578063e2b4ce97146103f7578063e30c5fa81461040c578063e3d8024214610421578063f15ff4551461045457610156565b8063996cba681461030357806399a5e1d014610346578063a036ba601461035b578063ac904c6314610370578063ca0e2e2014610385578063d08b4ecc1461039a57610156565b806342719faa1161010857806342719faa1461023e5780634ac22b3c1461027157806368ce74e7146102865780637d73b231146102b0578063837c70ef146102c5578063940b9c3b146102ee57610156565b80630bf25c911461015b5780630d42e82f146101725780631b3c96b4146101a55780633a7afe02146101d15780633acec15f14610202578063420a83e71461022957610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610469565b005b34801561017e57600080fd5b506101706004803603602081101561019557600080fd5b50356001600160a01b03166104c6565b610170600480360360408110156101bb57600080fd5b506001600160a01b0381351690602001356105ac565b3480156101dd57600080fd5b506101e66107de565b604080516001600160a01b039092168252519081900360200190f35b34801561020e57600080fd5b506102176107ed565b60408051918252519081900360200190f35b34801561023557600080fd5b506101e66107f2565b34801561024a57600080fd5b506101706004803603602081101561026157600080fd5b50356001600160a01b0316610801565b34801561027d57600080fd5b506101706108f7565b34801561029257600080fd5b50610170600480360360208110156102a957600080fd5b5035610954565b3480156102bc57600080fd5b506101e6610a52565b3480156102d157600080fd5b506102da610a61565b604080519115158252519081900360200190f35b3480156102fa57600080fd5b506102da610a71565b34801561030f57600080fd5b506101706004803603606081101561032657600080fd5b506001600160a01b03813581169160208101359091169060400135610a81565b34801561035257600080fd5b506101e6610b23565b34801561036757600080fd5b506101e6610b32565b34801561037c57600080fd5b50610217610b41565b34801561039157600080fd5b50610217610b47565b3480156103a657600080fd5b50610170610b4d565b3480156103bb57600080fd5b50610170600480360360208110156103d257600080fd5b50356001600160a01b0316610baa565b3480156103ee57600080fd5b50610170610c92565b34801561040357600080fd5b50610217610cef565b34801561041857600080fd5b506102da610cf5565b34801561042d57600080fd5b506101706004803603602081101561044457600080fd5b50356001600160a01b0316610d05565b34801561046057600080fd5b506102da610deb565b61047233610dfb565b6104b1576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b81b1916600160b81b179055565b6104cf33610dfb565b61050e576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610516610a61565b15610558576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60355481906001600160a01b03848116911614156105e5576036546105e0906001600160a01b038581169133911684610e86565b610786565b61060a6103e8603954016106046103e885610ee690919063ffffffff16565b90610f48565b905060006106188383610f8a565b90506001600160a01b0384161561066657603754610645906001600160a01b038681169133911684610e86565b603654610661906001600160a01b038681169133911685610e86565b610731565b8234146106ba576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6037546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156106f4573d6000803e3d6000fd5b506036546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561072f573d6000803e3d6000fd5b505b603754604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b603654604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6038546001600160a01b031690565b600181565b6037546001600160a01b031690565b61080a33610dfb565b610849576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610851610deb565b156108a3576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b603780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090033610dfb565b61093f576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b01b1916600160b01b179055565b6038546001600160a01b031633146109b3576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109c657506103e88111155b610a17576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60398190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6033546001600160a01b031690565b603854600160b81b900460ff1690565b603854600160a01b900460ff1690565b610a8a33610dfb565b610ac9576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610ad4838383610fcc565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6035546001600160a01b031690565b6036546001600160a01b031690565b60395490565b6103e881565b610b5633610dfb565b610b95576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a01b1916600160a01b179055565b610bb333610dfb565b610bf2576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610bfa610a71565b15610c3e576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b603680546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610c9b33610dfb565b610cda576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a81b1916600160a81b179055565b60345490565b603854600160b01b900460ff1690565b610d0e33610dfb565b610d4d576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610d55610cf5565b15610d97576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b603854600160a81b900460ff1690565b6000610e0860345461100b565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e5457600080fd5b505afa158015610e68573d6000803e3d6000fd5b505050506040513d6020811015610e7e57600080fd5b505192915050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ee090859061112c565b50505050565b600082610ef557506000610f42565b82820282848281610f0257fe5b0414610f3f5760405162461bcd60e51b81526004018080602001828103825260218152602001806115d56021913960400191505060405180910390fd5b90505b92915050565b6000610f3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111dd565b6000610f3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061127f565b6001600160a01b038216610ff257610fed6001600160a01b038416826112d9565b611006565b6110066001600160a01b03831684836113be565b505050565b6033546000906001600160a01b031661106b576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110b757600080fd5b505afa1580156110cb573d6000803e3d6000fd5b505050506040513d60208110156110e157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e5457600080fd5b6060611181826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114109092919063ffffffff16565b805190915015611006578080602001905160208110156111a057600080fd5b50516110065760405162461bcd60e51b815260040180806020018281038252602a815260200180611616602a913960400191505060405180910390fd5b600081836112695760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578181015183820152602001611216565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161127557fe5b0495945050505050565b600081848411156112d15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561122e578181015183820152602001611216565b505050900390565b8047101561132e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611379576040519150601f19603f3d011682016040523d82523d6000602084013e61137e565b606091505b50509050806110065760405162461bcd60e51b815260040180806020018281038252603a81526020018061159b603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261100690849061112c565b606061141f8484600085611427565b949350505050565b606061143285611594565b611483576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106114c25780518252601f1990920191602091820191016114a3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611524576040519150601f19603f3d011682016040523d82523d6000602084013e611529565b606091505b5091509150811561153d57915061141f9050565b80511561154d5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561122e578181015183820152602001611216565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7773656e646572206973206e6f742061646d696e000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220bab9bf47e97a81674b366e27bf5b270027d593b71446c30054edb101d0e06bad64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployLicence deploys a new Ethereum contract, binding an instance of Licence to it. func DeployLicence(auth *bind.TransactOpts, backend bind.ContractBackend, _licence_ *big.Int, _float_ common.Address, _holder_ common.Address, _tknAddress_ common.Address, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Licence, error) { diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index b0ecb498..16d8f53e 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220c1c27a76a46f48473e31be46d926e14b553b3bf96bff30f5bbfe60d26bf75aff64736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea26469706673582212200e7ee3634b67c1b1fdca30697e24a5583e677116139556ff7ac4c8217e94d26c64736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/mocks/wallet.go b/pkg/bindings/mocks/wallet.go index cb0bff07..20019779 100644 --- a/pkg/bindings/mocks/wallet.go +++ b/pkg/bindings/mocks/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"ConfirmedOperation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"confirmOperation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sendValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b506040516106ee3803806106ee8339818101604052604081101561007857600080fd5b50805160209091015161008a8261009a565b61009381610168565b505061021b565b600054610100900460ff16806100b357506100b3610215565b806100c1575060005460ff16155b6100fc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff16158015610127576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561015257603380546001600160a01b0319166001600160a01b0384161790555b8015610164576000805461ff00191690555b5050565b600054610100900460ff16806101815750610181610215565b8061018f575060005460ff16155b6101ca5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff161580156101f5576000805460ff1961ff0019909116610100171660011790555b81156101525760348290558015610164576000805461ff00191690555050565b303b1590565b6104968061022a6000396000f3fe60806040526004361061004e5760003560e01c806324a084df1461005a5780636945341f146100955780637d73b231146100aa578063a9059cbb146100db578063e2b4ce971461011457610055565b3661005557005b600080fd5b34801561006657600080fd5b506100936004803603604081101561007d57600080fd5b506001600160a01b03813516906020013561013b565b005b3480156100a157600080fd5b506100936101d9565b3480156100b657600080fd5b506100bf610269565b604080516001600160a01b039092168252519081900360200190f35b3480156100e757600080fd5b50610093600480360360408110156100fe57600080fd5b506001600160a01b038135169060200135610278565b34801561012057600080fd5b506101296102ae565b60408051918252519081900360200190f35b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b50509050806101d4576040805162461bcd60e51b815260206004820152601060248201526f1cd95b9915985b1d594819985a5b195960821b604482015290519081900360640190fd5b505050565b6101e2336102b4565b610233576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b604080516001815290517f0e8fe5b3baccd13c21d6a20906753a2bbcd86f70d69f4bde83f4e38cf3aae12b9181900360200190a1565b6033546001600160a01b031690565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156101d4573d6000803e3d6000fd5b60345490565b60006102c160345461033f565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b505192915050565b6033546000906001600160a01b031661039f576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d602081101561041557600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561030d57600080fdfea26469706673582212200a07d028750f95f8874dfbf976f9e9d83697beb6de91cb141b151c4351dde1d064736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b506040516106ee3803806106ee8339818101604052604081101561007857600080fd5b50805160209091015161008a8261009a565b61009381610168565b505061021b565b600054610100900460ff16806100b357506100b3610215565b806100c1575060005460ff16155b6100fc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff16158015610127576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561015257603380546001600160a01b0319166001600160a01b0384161790555b8015610164576000805461ff00191690555b5050565b600054610100900460ff16806101815750610181610215565b8061018f575060005460ff16155b6101ca5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff161580156101f5576000805460ff1961ff0019909116610100171660011790555b81156101525760348290558015610164576000805461ff00191690555050565b303b1590565b6104968061022a6000396000f3fe60806040526004361061004e5760003560e01c806324a084df1461005a5780636945341f146100955780637d73b231146100aa578063a9059cbb146100db578063e2b4ce971461011457610055565b3661005557005b600080fd5b34801561006657600080fd5b506100936004803603604081101561007d57600080fd5b506001600160a01b03813516906020013561013b565b005b3480156100a157600080fd5b506100936101d9565b3480156100b657600080fd5b506100bf610269565b604080516001600160a01b039092168252519081900360200190f35b3480156100e757600080fd5b50610093600480360360408110156100fe57600080fd5b506001600160a01b038135169060200135610278565b34801561012057600080fd5b506101296102ae565b60408051918252519081900360200190f35b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b50509050806101d4576040805162461bcd60e51b815260206004820152601060248201526f1cd95b9915985b1d594819985a5b195960821b604482015290519081900360640190fd5b505050565b6101e2336102b4565b610233576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b604080516001815290517f0e8fe5b3baccd13c21d6a20906753a2bbcd86f70d69f4bde83f4e38cf3aae12b9181900360200190a1565b6033546001600160a01b031690565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156101d4573d6000803e3d6000fd5b60345490565b60006102c160345461033f565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b505192915050565b6033546000906001600160a01b031661039f576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d602081101561041557600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561030d57600080fdfea26469706673582212204e08a0e07917a25cb0b0453613ed04554369a7f87ae5bc8ea053e5f1013317aa64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/oracle.go b/pkg/bindings/oracle.go index b3991876..abe6eece 100644 --- a/pkg/bindings/oracle.go +++ b/pkg/bindings/oracle.go @@ -31,7 +31,7 @@ var ( const OracleABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"}],\"name\":\"SetCryptoComparePublicKey\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_result\",\"type\":\"string\"}],\"name\":\"VerifiedProof\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_result\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"UpdateTokenRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cryptoCompareAPIPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"}],\"name\":\"updateCryptoCompareAPIPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // OracleBin is the compiled bytecode used for deploying new contracts. -var OracleBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b50604051620032323803806200323283398181016040526060811015620000a057600080fd5b5080516020820151604090920151909190620000bc836200010c565b620000c782620001e3565b620000d28162000299565b604051806060016040528060408152602001620031f2604091398051620001029160369160209091019062000355565b50505050620003f1565b600054610100900460ff1680620001285750620001286200034f565b8062000137575060005460ff16155b620001745760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c4602e913960400191505060405180910390fd5b600054610100900460ff16158015620001a0576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001cc57603380546001600160a01b0319166001600160a01b0384161790555b8015620001df576000805461ff00191690555b5050565b600054610100900460ff1680620001ff5750620001ff6200034f565b806200020e575060005460ff16155b6200024b5760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c4602e913960400191505060405180910390fd5b600054610100900460ff1615801562000277576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760348290558015620001df576000805461ff00191690555050565b600054610100900460ff1680620002b55750620002b56200034f565b80620002c4575060005460ff16155b620003015760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c4602e913960400191505060405180910390fd5b600054610100900460ff161580156200032d576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760358290558015620001df576000805461ff00191690555050565b303b1590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039857805160ff1916838001178555620003c8565b82800160010185558215620003c8579182015b82811115620003c8578251825591602001919060010190620003ab565b50620003d6929150620003da565b5090565b5b80821115620003d65760008155600101620003db565b612dc380620004016000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630cb2a6bd146100675780633acbe96e146101375780637d73b231146101b4578063877337b0146101d8578063c2c3d054146101f2578063e2b4ce9714610260575b600080fd5b6101356004803603606081101561007d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156100a757600080fd5b8201836020820111156100b957600080fd5b803590602001918460018302840111600160201b831117156100da57600080fd5b919390929091602081019035600160201b8111156100f757600080fd5b82018360208201111561010957600080fd5b803590602001918460018302840111600160201b8311171561012a57600080fd5b509092509050610268565b005b61013f610441565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610179578181015183820152602001610161565b50505050905090810190601f1680156101a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101bc6104cf565b604080516001600160a01b039092168252519081900360200190f35b6101e06104de565b60408051918252519081900360200190f35b6101356004803603602081101561020857600080fd5b810190602081018135600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460018302840111600160201b8311171561025557600080fd5b5090925090506104e4565b6101e06105b9565b600080610274876105bf565b965050509450505050816102cf576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e206d75737420626520617661696c61626c65000000000000000000604482015290519081900360640190fd5b6000806103d188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250506036805460408051602060026000196101006001871615020190941693909304601f810184900484028201840190925281815294509192508301828280156103c65780601f1061039b576101008083540402835291602001916103c6565b820191906000526020600020905b8154815290600101906020018083116103a957829003601f168201915b505050505086610748565b909250905081156104365760006104256104208a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c6992505050565b610f02565b9050816104338b8383610f15565b50505b505050505050505050565b6036805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b820191906000526020600020905b8154815290600101906020018083116104aa57829003601f168201915b505050505081565b6033546001600160a01b031690565b60355490565b6104ed33610f9b565b610537576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61054360368383612c00565b507fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa33838360405180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b60345490565b60606000806000806000806105d5603554611026565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561062157600080fd5b505afa158015610635573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561065e57600080fd5b8101908080516040519392919084600160201b82111561067d57600080fd5b90830190602082018581111561069257600080fd5b8251600160201b8111828201881017156106ab57600080fd5b82525081516020918201929091019080838360005b838110156106d85781810151838201526020016106c0565b50505050905090810190601f1680156107055780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610798576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b6041856001815181106107a757fe5b016020015160f81c14610801576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b60408051604180825260808201909252606091602082018180368337019050509050610831818760026041611147565b85516060908790604490811061084357fe5b0160200151875160f89190911c90610100908990604390811061086257fe5b016020015160f81c0201146108b7576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b60408051606080825260808201909252816020820181803683370190505090506108e5818860456060611147565b6108f0818388611164565b610935576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6040805160148082528183019092526060916020820181803683370190505090506109648183600b6014611147565b600080610971838961121d565b9092509050816109b7576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c80825260608281019093526020820181803683370190505090506109e581866034602c611147565b6109ee8161157b565b8051906020012060028d6040516020018082805190602001908083835b60208310610a2a5780518252601f199092019160209182019101610a0b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a8d5780518252601f199092019160209182019101610a6e565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610acc573d6000803e3d6000fd5b5050506040513d6020811015610ae157600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014610b56576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610bba578181015183820152602001610ba2565b50505050905090810190601f168015610be75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c1a578181015183820152602001610c02565b50505050905090810190601f168015610c475780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b60208310610ca05780518252601f199092019160209182019101610c81565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052519050600881118015610ce85750601c8111155b610d2e576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b604080516007808252818301909252606091602082018180368337019050509050610dc381856040516020018082805190602001908083835b60208310610d865780518252601f199092019160209182019101610d67565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007611147565b805160208201207f7a2d79c44ec25893f1deb7192af566af2e14c179cce8e62e025bd750d6e078e214610e2f576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b610e37612c7e565b610e4085611bbf565b9050610e6e610e67604051806040016040528060018152602001601d60f91b815250611bbf565b8290611be4565b5080600001519250610ea2610e9b604051806040016040528060018152602001607d60f81b815250611bbf565b8290611bfe565b508051600019840114610eee576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b610ef781611c5c565b93505050505b919050565b6000610f0f826012611cc3565b92915050565b610f20603554611026565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610f7e57600080fd5b505af1158015610f92573d6000803e3d6000fd5b50505050505050565b6000610fa8603454611026565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ff457600080fd5b505afa158015611008573d6000803e3d6000fd5b505050506040513d602081101561101e57600080fd5b505192915050565b6033546000906001600160a01b0316611086576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110d257600080fd5b505afa1580156110e6573d6000803e3d6000fd5b505050506040513d60208110156110fc57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610ff457600080fd5b6020848101908484010161115c828285612538565b505050505050565b60008060006002866040518082805190602001908083835b6020831061119b5780518252601f19909201916020918201910161117c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156111da573d6000803e3d6000fd5b5050506040513d60208110156111ef57600080fd5b505190506111fd8186612576565b845160208601206001600160a01b03918216911614925050509392505050565b600080836040516020018082805190602001908083835b602083106112535780518252601f199092019160209182019101611234565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461129157fe5b611299612c7e565b6112a285611bbf565b90506112ac612c7e565b6112ce604051806040016040528060018152602001601d60f91b815250611bbf565b90506112d8612c7e565b6112fa604051806040016040528060018152602001600160fd1b815250611bbf565b9050600061131861131361130e8685611be4565b611c5c565b6126ff565b905060008111801561132a5750602081105b611367576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061137e61137961130e8786611be4565b61270c565b60ff1690506000811180156113935750600d81105b6113d2576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b60006113e461131361130e8887611be4565b90506107e1811180156113f85750610bb881105b611436576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b600061144861131361130e8989611be4565b90506019811061148c576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b600061149e61131361130e8a8a611be4565b9050603c81106114e4576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006114f661131361130e8b8b611be4565b9050603c811061153c576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b6402540be4009093026305f5e10090940293909301620f4240909402939093016127109093029290920160649091020101958611979596505050505050565b606060008060008060008651905060608167ffffffffffffffff811180156115a257600080fd5b506040519080825280601f01601f1916602001820160405280156115cd576020820181803683370190505b509050600080831180156115e2575060048306155b611633576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f1689600285038151811061166357fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156116a557600283039250611713565b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f168960018503815181106116d557fe5b01602090810151604080516001600160f81b031990921682840152805180830360010181526021909201905280519101201415611713576001830392505b600319831660005b81811015611931576040518060a00160405280607b8152602001612cf2607b91398b5160018301928d91811061174d57fe5b0160200151815160f89190911c90811061176357fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cf2607b91398b5160018301928d91811061179a57fe5b0160200151815160f89190911c9081106117b057fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cf2607b91398b5160018301928d9181106117e757fe5b0160200151815160f89190911c9081106117fd57fe5b602001015160f81c60f81b96506040518060a00160405280607b8152602001612cf2607b91398b5160018301928d91811061183457fe5b0160200151815160f89190911c90811061184a57fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061188957fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b0319169186919081106118d457fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061191557fe5b60200101906001600160f81b031916908160001a90535061171b565b81850360021415611a29576040518060a00160405280607b8152602001612cf2607b91398b5160018301928d91811061196657fe5b0160200151815160f89190911c90811061197c57fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cf2607b91398b5160018301928d9181106119b357fe5b0160200151815160f89190911c9081106119c957fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b16848480600101955081518110611a0d57fe5b60200101906001600160f81b031916908160001a905350611bb0565b81850360031415611bb0576040518060a00160405280607b8152602001612cf2607b91398b5160018301928d918110611a5e57fe5b0160200151815160f89190911c908110611a7457fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cf2607b91398b5160018301928d918110611aab57fe5b0160200151815160f89190911c908110611ac157fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cf2607b91398b5160018301928d918110611af857fe5b0160200151815160f89190911c908110611b0e57fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c16179092169186918110611b4d57fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110611b9857fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b611bc7612c7e565b506040805180820190915281518152602082810190820152919050565b611bec612c7e565b611bf7838383612a18565b5092915050565b611c06612c7e565b815183511015611c17575081610f0f565b8151835160208086015190850151910191909103906001908214611c45575082516020840151819020908220145b8015611c5357835185510385525b50929392505050565b606080826000015167ffffffffffffffff81118015611c7a57600080fd5b506040519080825280601f01601f191660200182016040528015611ca5576020820181803683370190505b5090506000602082019050611bf78185602001518660000151612538565b60008281808080808080808080805b8b518110156122e1578b51600360fc1b908d9083908110611cef57fe5b01602001516001600160f81b03191610801590611d2d57508b51603960f81b908d9083908110611d1b57fe5b01602001516001600160f81b03191611155b8015611d37575083155b15611dcf578415611d8957611d4d8a600a612a89565b9950611d7c603060f81b60f81c8d8381518110611d6657fe5b01602001518c9160f89190911c0360ff16612ae9565b9950600190970196611dca565b60019550611d988b600a612a89565b9a50611dc7603060f81b60f81c8d8381518110611db157fe5b01602001518d9160f89190911c0360ff16612ae9565b9a505b6122d9565b8b51600360fc1b908d9083908110611de357fe5b01602001516001600160f81b03191610801590611e2157508b51603960f81b908d9083908110611e0f57fe5b01602001516001600160f81b03191611155b8015611e2a5750835b15611e7057611e3a89600a612a89565b9850611e69603060f81b60f81c8d8381518110611e5357fe5b01602001518b9160f89190911c0360ff16612ae9565b98506122d9565b8b51601760f91b908d9083908110611e8457fe5b01602001516001600160f81b0319161415611f8b5785611ee3576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415611f36576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315611f82576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b600194506122d9565b8b51602d60f81b908d9083908110611f9f57fe5b01602001516001600160f81b0319161415612095578215611ff5576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612035576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b80876001011461208c576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600192506122d9565b8b51602b60f81b908d90839081106120a957fe5b01602001516001600160f81b031916141561219f5781156120ff576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b821561213f576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612196576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600191506122d9565b8b51604560f81b908d90839081106121b357fe5b01602001516001600160f81b03191614806121ee57508b51606560f81b908d90839081106121dd57fe5b01602001516001600160f81b031916145b1561229c578561223d576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8315612290576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b600193508096506122d9565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101611cd2565b82806122ea5750815b15612303578660020181116122fe57600080fd5b612318565b83156123185786600101811161231857600080fd5b8215612399578d891061238f57604e8e8a031061236c576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161237a57fe5b049c50610f0f9b505050505050505050505050565b888e039d506123a6565b6123a38e8a612ae9565b9d505b878e1061246e57604e88106123ec5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cae6022913960400191505060405180910390fd5b6123fa8b600a8a900a612a89565b9a506124068b8b612ae9565b9a50604e888f031061244f576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b612467888f03600a0a8c612a8990919063ffffffff16565b9a50612525565b8d88039750604e88106124b25760405162461bcd60e51b8152600401808060200182810382526022815260200180612cae6022913960400191505060405180910390fd5b87600a0a8a816124be57fe5b049950604e8e106125005760405162461bcd60e51b8152600401808060200182810382526022815260200180612cae6022913960400191505060405180910390fd5b6125168e600a0a8c612a8990919063ffffffff16565b9a506125228b8b612ae9565b9a505b50989d9c50505050505050505050505050565b5b60208110612558578151835260209283019290910190601f1901612539565b905182516020929092036101000a6000190180199091169116179052565b600081516041146125ce576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a601b81148015906125f557508060ff16601c14155b156126315760405162461bcd60e51b8152600401808060200182810382526022815260200180612cd06022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561268d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166126f5576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b6000610f0f826000611cc3565b600080826040516020018082805190602001908083835b602083106127425780518252601f199092019160209182019101612723565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f4a18c9083b936e0757952a5d9d34b5575d427661506fbe9908c2a1da3f3e80d98114156127b1576001915050610efd565b7f78ec83563b948f0ac242d7eaefd592adf65964e11cc27f11ae41faa99a1e990a8114156127e3576002915050610efd565b7f2bab7d3f253ae0e3722abcc2571faced288946968116996ffc3de31fb7348ec3811415612815576003915050610efd565b7fc6f33aba2381b69f05afc78835e501547a9daffa08d674623068c378423ac188811415612847576004915050610efd565b7fdb5ee1006003349b29eda5be5fe34f728659f836a948d4ec595114aebbb159d3811415612879576005915050610efd565b7f44a0046ab54c1458fc3c39dfcadc52509ad809730ec301470d2d747dbe77242d8114156128ab576006915050610efd565b7f74d9e46f10329e61dc333ff1800274be516163110de31961b4e0c61de3e90c5c8114156128dd576007915050610efd565b7fed40c08ab6f3d9c5d71155e25b1271d5b9eca8c27bf89e1d2293fcb77c5abf6481141561290f576008915050610efd565b7f7d801199c77197eb9933a633741db90c2c6f3d7d14aca35f5f80a41b4a8863ac811415612941576009915050610efd565b7fb7841ed82fc96483f061ddc0b19846855df22558c4aea3b3b058ce0d9f1f516481141561297357600a915050610efd565b7f487851233e540dddea8f904d6802590aead5463b1c44965d68348bb7def25cf48114156129a557600b915050610efd565b7f3bd971d8758c58fe0c4d635451404450c5edda87d624a89819e0be5a122933dc8114156129d757600c915050610efd565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b612a20612c7e565b6000612a3e8560000151866020015186600001518760200151612b43565b60208087018051918601919091528051820385528651905191925001811415612a6a5760008552612a80565b8351835186519101900385528351810160208601525b50909392505050565b600082612a9857506000610f0f565b82820282848281612aa557fe5b0414612ae25760405162461bcd60e51b8152600401808060200182810382526021815260200180612d6d6021913960400191505060405180910390fd5b9392505050565b600082820183811015612ae2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008381868511612bf15760208511612bb65783518251600019600860208990030260020a011991821690888a018890039083165b828114612ba857818610612b96578a8a019650505050505050612bf8565b50600190940180519094908316612b78565b859650505050505050612bf8565b508383206000905b8588038211612bef5785832081811415612bde5783945050505050612bf8565b506001928301929190910190612bbe565b505b5050508284015b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c415782800160ff19823516178555612c6e565b82800160010185558215612c6e579182015b82811115612c6e578235825591602001919060010190612c53565b50612c7a929150612c98565b5090565b604051806040016040528060008152602001600081525090565b5b80821115612c7a5760008155600101612c9956fe6d6f7265207468616e20373720646563696d616c206469676974732070617273656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f4380a803e9bb4cc9a2a8184523586258a62ef2b02a1ad5c78374223ea81688464736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca" +var OracleBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b506040516200322f3803806200322f83398181016040526060811015620000a057600080fd5b5080516020820151604090920151909190620000bc836200010c565b620000c782620001e3565b620000d28162000299565b604051806060016040528060408152602001620031ef604091398051620001029160369160209091019062000355565b50505050620003f1565b600054610100900460ff1680620001285750620001286200034f565b8062000137575060005460ff16155b620001745760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff16158015620001a0576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001cc57603380546001600160a01b0319166001600160a01b0384161790555b8015620001df576000805461ff00191690555b5050565b600054610100900460ff1680620001ff5750620001ff6200034f565b806200020e575060005460ff16155b6200024b5760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff1615801562000277576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760348290558015620001df576000805461ff00191690555050565b600054610100900460ff1680620002b55750620002b56200034f565b80620002c4575060005460ff16155b620003015760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff161580156200032d576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760358290558015620001df576000805461ff00191690555050565b303b1590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039857805160ff1916838001178555620003c8565b82800160010185558215620003c8579182015b82811115620003c8578251825591602001919060010190620003ab565b50620003d6929150620003da565b5090565b5b80821115620003d65760008155600101620003db565b612dc080620004016000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630cb2a6bd146100675780633acbe96e146101375780637d73b231146101b4578063877337b0146101d8578063c2c3d054146101f2578063e2b4ce9714610260575b600080fd5b6101356004803603606081101561007d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156100a757600080fd5b8201836020820111156100b957600080fd5b803590602001918460018302840111600160201b831117156100da57600080fd5b919390929091602081019035600160201b8111156100f757600080fd5b82018360208201111561010957600080fd5b803590602001918460018302840111600160201b8311171561012a57600080fd5b509092509050610268565b005b61013f610441565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610179578181015183820152602001610161565b50505050905090810190601f1680156101a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101bc6104cf565b604080516001600160a01b039092168252519081900360200190f35b6101e06104de565b60408051918252519081900360200190f35b6101356004803603602081101561020857600080fd5b810190602081018135600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460018302840111600160201b8311171561025557600080fd5b5090925090506104e4565b6101e06105b6565b600080610274876105bc565b965050509450505050816102cf576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e206d75737420626520617661696c61626c65000000000000000000604482015290519081900360640190fd5b6000806103d188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250506036805460408051602060026000196101006001871615020190941693909304601f810184900484028201840190925281815294509192508301828280156103c65780601f1061039b576101008083540402835291602001916103c6565b820191906000526020600020905b8154815290600101906020018083116103a957829003601f168201915b505050505086610745565b909250905081156104365760006104256104208a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c6692505050565b610eff565b9050816104338b8383610f12565b50505b505050505050505050565b6036805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b820191906000526020600020905b8154815290600101906020018083116104aa57829003601f168201915b505050505081565b6033546001600160a01b031690565b60355490565b6104ed33610f98565b610534576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61054060368383612bfd565b507fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa33838360405180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b60345490565b60606000806000806000806105d2603554611023565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561065b57600080fd5b8101908080516040519392919084600160201b82111561067a57600080fd5b90830190602082018581111561068f57600080fd5b8251600160201b8111828201881017156106a857600080fd5b82525081516020918201929091019080838360005b838110156106d55781810151838201526020016106bd565b50505050905090810190601f1680156107025780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610795576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b6041856001815181106107a457fe5b016020015160f81c146107fe576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b6040805160418082526080820190925260609160208201818036833701905050905061082e818760026041611144565b85516060908790604490811061084057fe5b0160200151875160f89190911c90610100908990604390811061085f57fe5b016020015160f81c0201146108b4576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b60408051606080825260808201909252816020820181803683370190505090506108e2818860456060611144565b6108ed818388611161565b610932576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6040805160148082528183019092526060916020820181803683370190505090506109618183600b6014611144565b60008061096e838961121a565b9092509050816109b4576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c80825260608281019093526020820181803683370190505090506109e281866034602c611144565b6109eb81611578565b8051906020012060028d6040516020018082805190602001908083835b60208310610a275780518252601f199092019160209182019101610a08565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a8a5780518252601f199092019160209182019101610a6b565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610ac9573d6000803e3d6000fd5b5050506040513d6020811015610ade57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014610b53576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610bb7578181015183820152602001610b9f565b50505050905090810190601f168015610be45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c17578181015183820152602001610bff565b50505050905090810190601f168015610c445780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b60208310610c9d5780518252601f199092019160209182019101610c7e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052519050600881118015610ce55750601c8111155b610d2b576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b604080516007808252818301909252606091602082018180368337019050509050610dc081856040516020018082805190602001908083835b60208310610d835780518252601f199092019160209182019101610d64565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007611144565b805160208201207f7a2d79c44ec25893f1deb7192af566af2e14c179cce8e62e025bd750d6e078e214610e2c576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b610e34612c7b565b610e3d85611bbc565b9050610e6b610e64604051806040016040528060018152602001601d60f91b815250611bbc565b8290611be1565b5080600001519250610e9f610e98604051806040016040528060018152602001607d60f81b815250611bbc565b8290611bfb565b508051600019840114610eeb576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b610ef481611c59565b93505050505b919050565b6000610f0c826012611cc0565b92915050565b610f1d603554611023565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b50505050505050565b6000610fa5603454611023565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d602081101561101b57600080fd5b505192915050565b6033546000906001600160a01b0316611083576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d60208110156110f957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610ff157600080fd5b60208481019084840101611159828285612535565b505050505050565b60008060006002866040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156111d7573d6000803e3d6000fd5b5050506040513d60208110156111ec57600080fd5b505190506111fa8186612573565b845160208601206001600160a01b03918216911614925050509392505050565b600080836040516020018082805190602001908083835b602083106112505780518252601f199092019160209182019101611231565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461128e57fe5b611296612c7b565b61129f85611bbc565b90506112a9612c7b565b6112cb604051806040016040528060018152602001601d60f91b815250611bbc565b90506112d5612c7b565b6112f7604051806040016040528060018152602001600160fd1b815250611bbc565b9050600061131561131061130b8685611be1565b611c59565b6126fc565b90506000811180156113275750602081105b611364576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061137b61137661130b8786611be1565b612709565b60ff1690506000811180156113905750600d81105b6113cf576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b60006113e161131061130b8887611be1565b90506107e1811180156113f55750610bb881105b611433576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b600061144561131061130b8989611be1565b905060198110611489576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b600061149b61131061130b8a8a611be1565b9050603c81106114e1576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006114f361131061130b8b8b611be1565b9050603c8110611539576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b6402540be4009093026305f5e10090940293909301620f4240909402939093016127109093029290920160649091020101958611979596505050505050565b606060008060008060008651905060608167ffffffffffffffff8111801561159f57600080fd5b506040519080825280601f01601f1916602001820160405280156115ca576020820181803683370190505b509050600080831180156115df575060048306155b611630576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f1689600285038151811061166057fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156116a257600283039250611710565b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f168960018503815181106116d257fe5b01602090810151604080516001600160f81b031990921682840152805180830360010181526021909201905280519101201415611710576001830392505b600319831660005b8181101561192e576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061174a57fe5b0160200151815160f89190911c90811061176057fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061179757fe5b0160200151815160f89190911c9081106117ad57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106117e457fe5b0160200151815160f89190911c9081106117fa57fe5b602001015160f81c60f81b96506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061183157fe5b0160200151815160f89190911c90811061184757fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061188657fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b0319169186919081106118d157fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061191257fe5b60200101906001600160f81b031916908160001a905350611718565b81850360021415611a26576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061196357fe5b0160200151815160f89190911c90811061197957fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106119b057fe5b0160200151815160f89190911c9081106119c657fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b16848480600101955081518110611a0a57fe5b60200101906001600160f81b031916908160001a905350611bad565b81850360031415611bad576040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611a5b57fe5b0160200151815160f89190911c908110611a7157fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611aa857fe5b0160200151815160f89190911c908110611abe57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611af557fe5b0160200151815160f89190911c908110611b0b57fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c16179092169186918110611b4a57fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110611b9557fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b611bc4612c7b565b506040805180820190915281518152602082810190820152919050565b611be9612c7b565b611bf4838383612a15565b5092915050565b611c03612c7b565b815183511015611c14575081610f0c565b8151835160208086015190850151910191909103906001908214611c42575082516020840151819020908220145b8015611c5057835185510385525b50929392505050565b606080826000015167ffffffffffffffff81118015611c7757600080fd5b506040519080825280601f01601f191660200182016040528015611ca2576020820181803683370190505b5090506000602082019050611bf48185602001518660000151612535565b60008281808080808080808080805b8b518110156122de578b51600360fc1b908d9083908110611cec57fe5b01602001516001600160f81b03191610801590611d2a57508b51603960f81b908d9083908110611d1857fe5b01602001516001600160f81b03191611155b8015611d34575083155b15611dcc578415611d8657611d4a8a600a612a86565b9950611d79603060f81b60f81c8d8381518110611d6357fe5b01602001518c9160f89190911c0360ff16612ae6565b9950600190970196611dc7565b60019550611d958b600a612a86565b9a50611dc4603060f81b60f81c8d8381518110611dae57fe5b01602001518d9160f89190911c0360ff16612ae6565b9a505b6122d6565b8b51600360fc1b908d9083908110611de057fe5b01602001516001600160f81b03191610801590611e1e57508b51603960f81b908d9083908110611e0c57fe5b01602001516001600160f81b03191611155b8015611e275750835b15611e6d57611e3789600a612a86565b9850611e66603060f81b60f81c8d8381518110611e5057fe5b01602001518b9160f89190911c0360ff16612ae6565b98506122d6565b8b51601760f91b908d9083908110611e8157fe5b01602001516001600160f81b0319161415611f885785611ee0576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415611f33576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315611f7f576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b600194506122d6565b8b51602d60f81b908d9083908110611f9c57fe5b01602001516001600160f81b0319161415612092578215611ff2576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612032576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612089576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600192506122d6565b8b51602b60f81b908d90839081106120a657fe5b01602001516001600160f81b031916141561219c5781156120fc576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b821561213c576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612193576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600191506122d6565b8b51604560f81b908d90839081106121b057fe5b01602001516001600160f81b03191614806121eb57508b51606560f81b908d90839081106121da57fe5b01602001516001600160f81b031916145b15612299578561223a576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b831561228d576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b600193508096506122d6565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101611ccf565b82806122e75750815b15612300578660020181116122fb57600080fd5b612315565b83156123155786600101811161231557600080fd5b8215612396578d891061238c57604e8e8a0310612369576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161237757fe5b049c50610f0c9b505050505050505050505050565b888e039d506123a3565b6123a08e8a612ae6565b9d505b878e1061246b57604e88106123e95760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6123f78b600a8a900a612a86565b9a506124038b8b612ae6565b9a50604e888f031061244c576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b612464888f03600a0a8c612a8690919063ffffffff16565b9a50612522565b8d88039750604e88106124af5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b87600a0a8a816124bb57fe5b049950604e8e106124fd5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6125138e600a0a8c612a8690919063ffffffff16565b9a5061251f8b8b612ae6565b9a505b50989d9c50505050505050505050505050565b5b60208110612555578151835260209283019290910190601f1901612536565b905182516020929092036101000a6000190180199091169116179052565b600081516041146125cb576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a601b81148015906125f257508060ff16601c14155b1561262e5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ccd6022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561268a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166126f2576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b6000610f0c826000611cc0565b600080826040516020018082805190602001908083835b6020831061273f5780518252601f199092019160209182019101612720565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f4a18c9083b936e0757952a5d9d34b5575d427661506fbe9908c2a1da3f3e80d98114156127ae576001915050610efa565b7f78ec83563b948f0ac242d7eaefd592adf65964e11cc27f11ae41faa99a1e990a8114156127e0576002915050610efa565b7f2bab7d3f253ae0e3722abcc2571faced288946968116996ffc3de31fb7348ec3811415612812576003915050610efa565b7fc6f33aba2381b69f05afc78835e501547a9daffa08d674623068c378423ac188811415612844576004915050610efa565b7fdb5ee1006003349b29eda5be5fe34f728659f836a948d4ec595114aebbb159d3811415612876576005915050610efa565b7f44a0046ab54c1458fc3c39dfcadc52509ad809730ec301470d2d747dbe77242d8114156128a8576006915050610efa565b7f74d9e46f10329e61dc333ff1800274be516163110de31961b4e0c61de3e90c5c8114156128da576007915050610efa565b7fed40c08ab6f3d9c5d71155e25b1271d5b9eca8c27bf89e1d2293fcb77c5abf6481141561290c576008915050610efa565b7f7d801199c77197eb9933a633741db90c2c6f3d7d14aca35f5f80a41b4a8863ac81141561293e576009915050610efa565b7fb7841ed82fc96483f061ddc0b19846855df22558c4aea3b3b058ce0d9f1f516481141561297057600a915050610efa565b7f487851233e540dddea8f904d6802590aead5463b1c44965d68348bb7def25cf48114156129a257600b915050610efa565b7f3bd971d8758c58fe0c4d635451404450c5edda87d624a89819e0be5a122933dc8114156129d457600c915050610efa565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b612a1d612c7b565b6000612a3b8560000151866020015186600001518760200151612b40565b60208087018051918601919091528051820385528651905191925001811415612a675760008552612a7d565b8351835186519101900385528351810160208601525b50909392505050565b600082612a9557506000610f0c565b82820282848281612aa257fe5b0414612adf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d6a6021913960400191505060405180910390fd5b9392505050565b600082820183811015612adf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008381868511612bee5760208511612bb35783518251600019600860208990030260020a011991821690888a018890039083165b828114612ba557818610612b93578a8a019650505050505050612bf5565b50600190940180519094908316612b75565b859650505050505050612bf5565b508383206000905b8588038211612bec5785832081811415612bdb5783945050505050612bf5565b506001928301929190910190612bbb565b505b5050508284015b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c3e5782800160ff19823516178555612c6b565b82800160010185558215612c6b579182015b82811115612c6b578235825591602001919060010190612c50565b50612c77929150612c95565b5090565b604051806040016040528060008152602001600081525090565b5b80821115612c775760008155600101612c9656fe6d6f7265207468616e20373720646563696d616c206469676974732070617273656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220722ef616d78df62175c0d6d078c623dc93acda4c9f69b132d59c276e01c5348064736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca" // DeployOracle deploys a new Ethereum contract, binding an instance of Oracle to it. func DeployOracle(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _tokenWhitelistNode_ [32]byte) (common.Address, *types.Transaction, *Oracle, error) { diff --git a/pkg/bindings/tokenWhitelist.go b/pkg/bindings/tokenWhitelist.go index da41ef97..b5c67ec2 100644 --- a/pkg/bindings/tokenWhitelist.go +++ b/pkg/bindings/tokenWhitelist.go @@ -31,7 +31,7 @@ var ( const TokenWhitelistABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_oracleNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_stablecoinAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"AddedExclusiveMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"AddedMethodId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_magnitude\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"AddedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"RemovedExclusiveMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"RemovedMethodId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"RemovedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"}],\"name\":\"UpdatedTokenLoadable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"}],\"name\":\"UpdatedTokenRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"UpdatedTokenRedeemable\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_symbols\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_magnitude\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"_loadable\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"_redeemable\",\"type\":\"bool[]\"},{\"internalType\":\"uint256\",\"name\":\"_lastUpdate\",\"type\":\"uint256\"}],\"name\":\"addTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getERC20RecipientAndAmount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStablecoinInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"isERC20MethodSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"isERC20MethodWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracleNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemableCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemableTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"}],\"name\":\"removeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"}],\"name\":\"setTokenLoadable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"setTokenRedeemable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stablecoin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_updateDate\",\"type\":\"uint256\"}],\"name\":\"updateTokenRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // TokenWhitelistBin is the compiled bytecode used for deploying new contracts. -var TokenWhitelistBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034553480156200005657600080fd5b506040516200282738038062002827833981810160405260808110156200007c57600080fd5b50805160208201516040830151606090930151919290916200009e8462000194565b620000a9826200026b565b603a9290925550603980546001600160a01b0319166001600160a01b039092169190911790555060366020527f36aaa0d2a881446a5d284caf55fe779596f3dd15619675545d6094c8909139c2805460ff1990811660019081179092557fbdd45af1473e0dd27b6e035ccafb153373c61968247ba4b7c0e6c1c96496792f80548216831790557f877171c55a6bbc4aa0ea34a24de07dd3c5952b4a7d66df2b953f79c7955a122780548216831790556323b872dd60e01b6000527f04324ec27bf37ba85969616ff61c6c0e3939d6b141697b749b0be22765b298708054909116909117905562000327565b600054610100900460ff1680620001b05750620001b062000321565b80620001bf575060005460ff16155b620001fc5760405162461bcd60e51b815260040180806020018281038252602e815260200180620027f9602e913960400191505060405180910390fd5b600054610100900460ff1615801562000228576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200025457603380546001600160a01b0319166001600160a01b0384161790555b801562000267576000805461ff00191690555b5050565b600054610100900460ff16806200028757506200028762000321565b8062000296575060005460ff16155b620002d35760405162461bcd60e51b815260040180806020018281038252602e815260200180620027f9602e913960400191505060405180910390fd5b600054610100900460ff16158015620002ff576000805460ff1961ff0019909116610100171660011790555b811562000254576034829055801562000267576000805461ff00191690555050565b303b1590565b6124c280620003376000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610582578063afc72e93146105b8578063d545782e14610659578063e2b4ce971461068b578063e9cbd8221461069357610116565b80636c3824ef146104ba5780637d73b2311461052857806380cc0dda1461054c578063872773061461055457610116565b80633efec5e9116100e95780633efec5e9146103ee578063443dd2a4146103f657806344b049bc1461044e5780635d793a7d146104565780636a1744dc1461048457610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc1461023e575b600080fd5b61012361069b565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a1565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c4565b6040518080602001888152602001878152602001861515815260200185151581526020018415158152602001838152602001828103825289818151815260200191508051906020019080838360005b838110156101fd5781810151838201526020016101e5565b50505050905090810190601f16801561022a5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ec600480360360c081101561025457600080fd5b810190602081018135600160201b81111561026e57600080fd5b82018360208201111561028057600080fd5b803590602001918460208302840111600160201b831117156102a157600080fd5b919390929091602081019035600160201b8111156102be57600080fd5b8201836020820111156102d057600080fd5b803590602001918460208302840111600160201b831117156102f157600080fd5b919390929091602081019035600160201b81111561030e57600080fd5b82018360208201111561032057600080fd5b803590602001918460208302840111600160201b8311171561034157600080fd5b919390929091602081019035600160201b81111561035e57600080fd5b82018360208201111561037057600080fd5b803590602001918460208302840111600160201b8311171561039157600080fd5b919390929091602081019035600160201b8111156103ae57600080fd5b8201836020820111156103c057600080fd5b803590602001918460208302840111600160201b831117156103e157600080fd5b9193509150356107c2565b005b610196610c38565b6103fe610d36565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043a578181015183820152602001610422565b505050509050019250505060405180910390f35b6103fe610d98565b6103ec6004803603604081101561046c57600080fd5b506001600160a01b0381351690602001351515610e7d565b61015c6004803603604081101561049a57600080fd5b5080356001600160a01b031690602001356001600160e01b031916611067565b6103ec600480360360208110156104d057600080fd5b810190602081018135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460208302840111600160201b8311171561051d57600080fd5b5090925090506110ee565b61053061139e565b604080516001600160a01b039092168252519081900360200190f35b6101236113ad565b6103ec6004803603604081101561056a57600080fd5b506001600160a01b03813516906020013515156113b3565b6103ec6004803603606081101561059857600080fd5b506001600160a01b038135811691602081013590911690604001356114ef565b610636600480360360408110156105ce57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b50909250905061159c565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ec6004803603606081101561066f57600080fd5b506001600160a01b0381351690602081013590604001356118bc565b610123611a06565b610530611a0c565b60385490565b6001600160e01b0319811660009081526036602052604090205460ff165b919050565b6001600160a01b038116600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff8084169694840481169562010000909404169391929189918301828280156107a15780601f10610776576101008083540402835291602001916107a1565b820191906000526020600020905b81548152906001019060200180831161078457829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cb33611a1b565b610815576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082357508986145b801561082e57508984145b801561083957508984145b61088a576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c2a57603560008d8d848181106108a557fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610920576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109456109408c8c8581811061093457fe5b90506020020135611aa6565b611ad2565b90506040518060e001604052808281526020018a8a8581811061096457fe5b9050602002013581526020016000815260200160011515815260200188888581811061098c57fe5b905060200201351515151581526020018686858181106109a857fe5b9050602002013515151515815260200184815250603560008f8f868181106109cc57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1892919061230f565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c09091015160049091015560378d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610af557603854610af1906001611b40565b6038555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2357fe5b905060200201356001600160a01b0316838c8c87818110610b4057fe5b905060200201358b8b88818110610b5357fe5b9050602002013515158a8a89818110610b6857fe5b90506020020135151560405180876001600160a01b03168152602001866001600160a01b031681526020018060200185815260200184151581526020018315158152602001828103825286818151815260200191508051906020019080838360005b83811015610be2578181015183820152602001610bca565b50505050905090810190601f168015610c0f5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088d565b505050505050505050505050565b6039546001600160a01b0316600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff808416969484048116956201000090940416939192918991830182828015610d175780601f10610cec57610100808354040283529160200191610d17565b820191906000526020600020905b815481529060010190602001808311610cfa57829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606037805480602002602001604051908101604052809291908181526020018280548015610d8e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d70575b5050505050905090565b60608060385467ffffffffffffffff81118015610db457600080fd5b50604051908082528060200260200182016040528015610dde578160200160208202803683370190505b5090506000805b603754811015610e7557600060378281548110610dfe57fe5b60009182526020808320909101546001600160a01b0316808352603590915260409091206003015490915060ff620100009091041615610e6c5780848481518110610e4557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de5565b509091505090565b610e8633611a1b565b610ed0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff16610f40576040805162461bcd60e51b815260206004820152601f60248201527f72656465656d61626c653a20746f6b656e206e6f7420617661696c61626c6500604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff620100009091041615158115151415610fbe576040805162461bcd60e51b815260206004820152601b60248201527f72656465656d61626c653a206e6f207374617465206368616e67650000000000604482015290519081900360640190fd5b8015610fda57603854610fd2906001611b40565b603855610fec565b603854610fe8906001611ba1565b6038555b6001600160a01b038216600081815260356020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526035602052604081206003015460ff166110cc576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526036602052604090205460ff16919050565b6110f733611a1b565b611141576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b8181101561139957600083838381811061115a57fe5b602090810292909201356001600160a01b0316600081815260359093526040909220600301549192505060ff166111d1576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526035602052604090206003015462010000900460ff161561120d57603854611209906001611ba1565b6038555b6001600160a01b038116600090815260356020526040812090611230828261238d565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b603754611266906001611ba1565b81101561131957816001600160a01b03166037828154811061128457fe5b6000918252602090912001546001600160a01b0316141561131157603780546112ae906001611ba1565b815481106112b857fe5b600091825260209091200154603780546001600160a01b0390921691839081106112de57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611319565b600101611258565b50603780548061132557fe5b6000828152602090819020820160001990810180546001600160a01b0319169055909101909155604080513381526001600160a01b0384169281019290925280517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad09281900390910190a150600101611144565b505050565b6033546001600160a01b031690565b603a5490565b6113bc33611a1b565b611406576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff16611476576040805162461bcd60e51b815260206004820181905260248201527f6c6f616461626c653a20746f6b656e206973206e6f7420617661696c61626c65604482015290519081900360640190fd5b6001600160a01b0382166000818152603560209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114f833611a1b565b611542576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61154d838383611be3565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b60008060248310156115f5576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061163b600086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c1d9050565b90506116478682611067565b61168d576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b14156116f557856116eb600487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c909050565b92509250506118b4565b6001600160e01b031981166323b872dd60e01b14156117ec576064841015611764576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6117a8603086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c9d9050565b6116eb604487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c909050565b604484101561182c5760405162461bcd60e51b81526004018080602001828103825260258152602001806124046025913960400191505060405180910390fd5b611870601086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c9d9050565b6116eb602487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c909050565b935093915050565b60006118c9603a54611d13565b90506118d433611a1b565b806118e75750336001600160a01b038216145b611931576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526035602052604090206003015460ff1661199a576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03841660008181526035602090815260409182902060028101879055600401859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60345490565b6039546001600160a01b031690565b6000611a28603454611d13565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a7457600080fd5b505afa158015611a88573d6000803e3d6000fd5b505050506040513d6020811015611a9e57600080fd5b505192915050565b611aae6123d4565b6040516020810160405282815280602083015250611acb82611e34565b8152919050565b606080826000015167ffffffffffffffff81118015611af057600080fd5b506040519080825280601f01601f191660200182016040528015611b1b576020820181803683370190505b5090506000602082019050611b398185602001518660000151611ecd565b5092915050565b600082820183811015611b9a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000611b9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f0b565b6001600160a01b038216611c0957611c046001600160a01b03841682611fa2565b611399565b6113996001600160a01b0383168483612087565b6000611c2a826004611b40565b83511015611c76576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c84846020611b40565b90940151949350505050565b6000611c2a826020611b40565b6000611caa826014611b40565b83511015611cf6576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611d04846020611b40565b9094015160601c949350505050565b6033546000906001600160a01b0316611d73576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611dbf57600080fd5b505afa158015611dd3573d6000803e3d6000fd5b505050506040513d6020811015611de957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015611a7457600080fd5b60008082611e465760009150506106bf565b6fffffffffffffffffffffffffffffffff8316611e6a57601001600160801b830492505b67ffffffffffffffff8316611e8b5760080168010000000000000000830492505b63ffffffff8316611ea357600401600160201b830492505b61ffff8316611eb85760020162010000830492505b60ff8316611ec4576001015b60200392915050565b5b60208110611eed578151835260209283019290910190601f1901611ece565b905182516020929092036101000a6000190180199091169116179052565b60008184841115611f9a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f5f578181015183820152602001611f47565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b80471015611ff7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114612042576040519150601f19603f3d011682016040523d82523d6000602084013e612047565b606091505b50509050806113995760405162461bcd60e51b815260040180806020018281038252603a815260200180612429603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113999084906060612129826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121859092919063ffffffff16565b8051909150156113995780806020019051602081101561214857600080fd5b50516113995760405162461bcd60e51b815260040180806020018281038252602a815260200180612463602a913960400191505060405180910390fd5b6060612194848460008561219c565b949350505050565b60606121a785612309565b6121f8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106122375780518252601f199092019160209182019101612218565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612299576040519150601f19603f3d011682016040523d82523d6000602084013e61229e565b606091505b509150915081156122b25791506121949050565b8051156122c25780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611f5f578181015183820152602001611f47565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061235057805160ff191683800117855561237d565b8280016001018555821561237d579182015b8281111561237d578251825591602001919060010190612362565b506123899291506123ee565b5090565b50805460018160011615610100020316600290046000825580601f106123b357506123d1565b601f0160209004906000526020600020908101906123d191906123ee565b50565b604051806040016040528060008152602001600081525090565b5b8082111561238957600081556001016123ef56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d617920686176652072657665727465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212206f3d2ac55bc42359aa22ee8a37f0a57a6533a0bc933a38f54c189a72f833f98464736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var TokenWhitelistBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034553480156200005657600080fd5b506040516200281838038062002818833981810160405260808110156200007c57600080fd5b50805160208201516040830151606090930151919290916200009e8462000194565b620000a9826200026b565b603a9290925550603980546001600160a01b0319166001600160a01b039092169190911790555060366020527f36aaa0d2a881446a5d284caf55fe779596f3dd15619675545d6094c8909139c2805460ff1990811660019081179092557fbdd45af1473e0dd27b6e035ccafb153373c61968247ba4b7c0e6c1c96496792f80548216831790557f877171c55a6bbc4aa0ea34a24de07dd3c5952b4a7d66df2b953f79c7955a122780548216831790556323b872dd60e01b6000527f04324ec27bf37ba85969616ff61c6c0e3939d6b141697b749b0be22765b298708054909116909117905562000327565b600054610100900460ff1680620001b05750620001b062000321565b80620001bf575060005460ff16155b620001fc5760405162461bcd60e51b815260040180806020018281038252602e815260200180620027ea602e913960400191505060405180910390fd5b600054610100900460ff1615801562000228576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200025457603380546001600160a01b0319166001600160a01b0384161790555b801562000267576000805461ff00191690555b5050565b600054610100900460ff16806200028757506200028762000321565b8062000296575060005460ff16155b620002d35760405162461bcd60e51b815260040180806020018281038252602e815260200180620027ea602e913960400191505060405180910390fd5b600054610100900460ff16158015620002ff576000805460ff1961ff0019909116610100171660011790555b811562000254576034829055801562000267576000805461ff00191690555050565b303b1590565b6124b380620003376000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610582578063afc72e93146105b8578063d545782e14610659578063e2b4ce971461068b578063e9cbd8221461069357610116565b80636c3824ef146104ba5780637d73b2311461052857806380cc0dda1461054c578063872773061461055457610116565b80633efec5e9116100e95780633efec5e9146103ee578063443dd2a4146103f657806344b049bc1461044e5780635d793a7d146104565780636a1744dc1461048457610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc1461023e575b600080fd5b61012361069b565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a1565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c4565b6040518080602001888152602001878152602001861515815260200185151581526020018415158152602001838152602001828103825289818151815260200191508051906020019080838360005b838110156101fd5781810151838201526020016101e5565b50505050905090810190601f16801561022a5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ec600480360360c081101561025457600080fd5b810190602081018135600160201b81111561026e57600080fd5b82018360208201111561028057600080fd5b803590602001918460208302840111600160201b831117156102a157600080fd5b919390929091602081019035600160201b8111156102be57600080fd5b8201836020820111156102d057600080fd5b803590602001918460208302840111600160201b831117156102f157600080fd5b919390929091602081019035600160201b81111561030e57600080fd5b82018360208201111561032057600080fd5b803590602001918460208302840111600160201b8311171561034157600080fd5b919390929091602081019035600160201b81111561035e57600080fd5b82018360208201111561037057600080fd5b803590602001918460208302840111600160201b8311171561039157600080fd5b919390929091602081019035600160201b8111156103ae57600080fd5b8201836020820111156103c057600080fd5b803590602001918460208302840111600160201b831117156103e157600080fd5b9193509150356107c2565b005b610196610c35565b6103fe610d33565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043a578181015183820152602001610422565b505050509050019250505060405180910390f35b6103fe610d95565b6103ec6004803603604081101561046c57600080fd5b506001600160a01b0381351690602001351515610e7a565b61015c6004803603604081101561049a57600080fd5b5080356001600160a01b031690602001356001600160e01b031916611061565b6103ec600480360360208110156104d057600080fd5b810190602081018135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460208302840111600160201b8311171561051d57600080fd5b5090925090506110e8565b610530611395565b604080516001600160a01b039092168252519081900360200190f35b6101236113a4565b6103ec6004803603604081101561056a57600080fd5b506001600160a01b03813516906020013515156113aa565b6103ec6004803603606081101561059857600080fd5b506001600160a01b038135811691602081013590911690604001356114e3565b610636600480360360408110156105ce57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b50909250905061158d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ec6004803603606081101561066f57600080fd5b506001600160a01b0381351690602081013590604001356118ad565b6101236119f7565b6105306119fd565b60385490565b6001600160e01b0319811660009081526036602052604090205460ff165b919050565b6001600160a01b038116600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff8084169694840481169562010000909404169391929189918301828280156107a15780601f10610776576101008083540402835291602001916107a1565b820191906000526020600020905b81548152906001019060200180831161078457829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cb33611a0c565b610812576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b898814801561082057508986145b801561082b57508984145b801561083657508984145b610887576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c2757603560008d8d848181106108a257fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff161561091d576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b606061094261093d8c8c8581811061093157fe5b90506020020135611a97565b611ac3565b90506040518060e001604052808281526020018a8a8581811061096157fe5b9050602002013581526020016000815260200160011515815260200188888581811061098957fe5b905060200201351515151581526020018686858181106109a557fe5b9050602002013515151515815260200184815250603560008f8f868181106109c957fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a15929190612300565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c09091015160049091015560378d8d84818110610a8c57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad457fe5b9050602002013515610af257603854610aee906001611b31565b6038555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2057fe5b905060200201356001600160a01b0316838c8c87818110610b3d57fe5b905060200201358b8b88818110610b5057fe5b9050602002013515158a8a89818110610b6557fe5b90506020020135151560405180876001600160a01b03168152602001866001600160a01b031681526020018060200185815260200184151581526020018315158152602001828103825286818151815260200191508051906020019080838360005b83811015610bdf578181015183820152602001610bc7565b50505050905090810190601f168015610c0c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088a565b505050505050505050505050565b6039546001600160a01b0316600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff808416969484048116956201000090940416939192918991830182828015610d145780601f10610ce957610100808354040283529160200191610d14565b820191906000526020600020905b815481529060010190602001808311610cf757829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606037805480602002602001604051908101604052809291908181526020018280548015610d8b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d6d575b5050505050905090565b60608060385467ffffffffffffffff81118015610db157600080fd5b50604051908082528060200260200182016040528015610ddb578160200160208202803683370190505b5090506000805b603754811015610e7257600060378281548110610dfb57fe5b60009182526020808320909101546001600160a01b0316808352603590915260409091206003015490915060ff620100009091041615610e695780848481518110610e4257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de2565b509091505090565b610e8333611a0c565b610eca576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff16610f3a576040805162461bcd60e51b815260206004820152601f60248201527f72656465656d61626c653a20746f6b656e206e6f7420617661696c61626c6500604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff620100009091041615158115151415610fb8576040805162461bcd60e51b815260206004820152601b60248201527f72656465656d61626c653a206e6f207374617465206368616e67650000000000604482015290519081900360640190fd5b8015610fd457603854610fcc906001611b31565b603855610fe6565b603854610fe2906001611b92565b6038555b6001600160a01b038216600081815260356020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526035602052604081206003015460ff166110c6576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526036602052604090205460ff16919050565b6110f133611a0c565b611138576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b8181101561139057600083838381811061115157fe5b602090810292909201356001600160a01b0316600081815260359093526040909220600301549192505060ff166111c8576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526035602052604090206003015462010000900460ff161561120457603854611200906001611b92565b6038555b6001600160a01b038116600090815260356020526040812090611227828261237e565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b60375461125d906001611b92565b81101561131057816001600160a01b03166037828154811061127b57fe5b6000918252602090912001546001600160a01b0316141561130857603780546112a5906001611b92565b815481106112af57fe5b600091825260209091200154603780546001600160a01b0390921691839081106112d557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611310565b60010161124f565b50603780548061131c57fe5b6000828152602090819020820160001990810180546001600160a01b0319169055909101909155604080513381526001600160a01b0384169281019290925280517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad09281900390910190a15060010161113b565b505050565b6033546001600160a01b031690565b603a5490565b6113b333611a0c565b6113fa576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff1661146a576040805162461bcd60e51b815260206004820181905260248201527f6c6f616461626c653a20746f6b656e206973206e6f7420617661696c61626c65604482015290519081900360640190fd5b6001600160a01b0382166000818152603560209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114ec33611a0c565b611533576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61153e838383611bd4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b60008060248310156115e6576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061162c600086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c0e9050565b90506116388682611061565b61167e576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b14156116e657856116dc600487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b92509250506118a5565b6001600160e01b031981166323b872dd60e01b14156117dd576064841015611755576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b611799603086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc604487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b604484101561181d5760405162461bcd60e51b81526004018080602001828103825260258152602001806123f56025913960400191505060405180910390fd5b611861601086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc602487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b935093915050565b60006118ba603a54611d04565b90506118c533611a0c565b806118d85750336001600160a01b038216145b611922576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526035602052604090206003015460ff1661198b576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03841660008181526035602090815260409182902060028101879055600401859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60345490565b6039546001600160a01b031690565b6000611a19603454611d04565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a6557600080fd5b505afa158015611a79573d6000803e3d6000fd5b505050506040513d6020811015611a8f57600080fd5b505192915050565b611a9f6123c5565b6040516020810160405282815280602083015250611abc82611e25565b8152919050565b606080826000015167ffffffffffffffff81118015611ae157600080fd5b506040519080825280601f01601f191660200182016040528015611b0c576020820181803683370190505b5090506000602082019050611b2a8185602001518660000151611ebe565b5092915050565b600082820183811015611b8b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000611b8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611efc565b6001600160a01b038216611bfa57611bf56001600160a01b03841682611f93565b611390565b6113906001600160a01b0383168483612078565b6000611c1b826004611b31565b83511015611c67576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c75846020611b31565b90940151949350505050565b6000611c1b826020611b31565b6000611c9b826014611b31565b83511015611ce7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cf5846020611b31565b9094015160601c949350505050565b6033546000906001600160a01b0316611d64576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d6020811015611dda57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015611a6557600080fd5b60008082611e375760009150506106bf565b6fffffffffffffffffffffffffffffffff8316611e5b57601001600160801b830492505b67ffffffffffffffff8316611e7c5760080168010000000000000000830492505b63ffffffff8316611e9457600401600160201b830492505b61ffff8316611ea95760020162010000830492505b60ff8316611eb5576001015b60200392915050565b5b60208110611ede578151835260209283019290910190601f1901611ebf565b905182516020929092036101000a6000190180199091169116179052565b60008184841115611f8b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f50578181015183820152602001611f38565b50505050905090810190601f168015611f7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b80471015611fe8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114612033576040519150601f19603f3d011682016040523d82523d6000602084013e612038565b606091505b50509050806113905760405162461bcd60e51b815260040180806020018281038252603a81526020018061241a603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611390908490606061211a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121769092919063ffffffff16565b8051909150156113905780806020019051602081101561213957600080fd5b50516113905760405162461bcd60e51b815260040180806020018281038252602a815260200180612454602a913960400191505060405180910390fd5b6060612185848460008561218d565b949350505050565b6060612198856122fa565b6121e9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106122285780518252601f199092019160209182019101612209565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461228a576040519150601f19603f3d011682016040523d82523d6000602084013e61228f565b606091505b509150915081156122a35791506121859050565b8051156122b35780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611f50578181015183820152602001611f38565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234157805160ff191683800117855561236e565b8280016001018555821561236e579182015b8281111561236e578251825591602001919060010190612353565b5061237a9291506123df565b5090565b50805460018160011615610100020316600290046000825580601f106123a457506123c2565b601f0160209004906000526020600020908101906123c291906123df565b50565b604051806040016040528060008152602001600081525090565b5b8082111561237a57600081556001016123e056fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d617920686176652072657665727465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212200c3e72a5bbb67727e2c1c90e1e83395faabcbb4937004243c332eaa81a4ec24f64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployTokenWhitelist deploys a new Ethereum contract, binding an instance of TokenWhitelist to it. func DeployTokenWhitelist(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _oracleNode_ [32]byte, _controllerNode_ [32]byte, _stablecoinAddress_ common.Address) (common.Address, *types.Transaction, *TokenWhitelist, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index e74e7633..39a760d6 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -28,10 +28,10 @@ var ( ) // WalletABI is the input ABI used to generate the binding from. -const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" +const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"SetMonolith2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"SetPersonal2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"monolith2FA\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"personal2FA\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setMonolith2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"setPersonal2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603b5534801561007957600080fd5b50615304806100896000396000f3fe60806040526004361061025c5760003560e01c8063715018a611610144578063cbd2ac68116100b6578063de212bf31161007a578063de212bf314610cd9578063e2b4ce9714610cee578063e61c51ca14610d03578063f36febda14610d2d578063f421764814610d66578063f8b2cb4f14610de15761025c565b8063cbd2ac6814610b98578063cccdc55614610bc2578063cd7958dd14610bd7578063ce0b5bd514610c85578063d251fefc14610caf5761025c565b80638da5cb5b116101085780638da5cb5b14610a2a57806390e690c714610a3f578063aaf1fc6214610a54578063b242e53414610b05578063be40ba7914610b40578063beabacc814610b555761025c565b8063715018a61461093f578063747c31d6146109545780637d73b231146109695780637fd004fa1461099a578063877337b014610a155761025c565b80633b8252fa116101dd57806347b55a9d116101a157806347b55a9d146107eb5780634d9aa248146108005780635adc02ab146108155780636137d6701461083f57806369efdfc0146108ba5780636c37a7e6146109155761025c565b80633b8252fa146105ed5780633f579f4214610614578063458d07f2146106da57806345b12efc1461070457806346efe0ed146107195761025c565b80632121dc75116102245780632121dc75146104ff57806326d05ab214610514578063294f40251461052957806332531c3c1461058e5780633a43199f146105c15761025c565b806301ffc9a714610261578063100f23fd146102a95780631127b57e146102d55780631626ba7e1461035f57806320c13b0b14610434575b600080fd5b34801561026d57600080fd5b506102956004803603602081101561028457600080fd5b50356001600160e01b031916610e14565b604080519115158252519081900360200190f35b3480156102b557600080fd5b506102d3600480360360208110156102cc57600080fd5b5035610e2e565b005b3480156102e157600080fd5b506102ea610fd5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032457818101518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036b57600080fd5b506104176004803603604081101561038257600080fd5b81359190810190604081016020820135600160201b8111156103a357600080fd5b8201836020820111156103b557600080fd5b803590602001918460018302840111600160201b831117156103d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ff6945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561044057600080fd5b506104176004803603604081101561045757600080fd5b810190602081018135600160201b81111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111600160201b831117156104a457600080fd5b919390929091602081019035600160201b8111156104c157600080fd5b8201836020820111156104d357600080fd5b803590602001918460018302840111600160201b831117156104f457600080fd5b509092509050611065565b34801561050b57600080fd5b5061029561113c565b34801561052057600080fd5b5061029561114d565b34801561053557600080fd5b5061053e611156565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561057a578181015183820152602001610562565b505050509050019250505060405180910390f35b34801561059a57600080fd5b50610295600480360360208110156105b157600080fd5b50356001600160a01b03166111b8565b6102d3600480360360408110156105d757600080fd5b506001600160a01b0381351690602001356111cd565b3480156105f957600080fd5b506106026113ed565b60408051918252519081900360200190f35b34801561062057600080fd5b506102ea6004803603606081101561063757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561066657600080fd5b82018360208201111561067857600080fd5b803590602001918460018302840111600160201b8311171561069957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113f3945050505050565b3480156106e657600080fd5b506102d3600480360360208110156106fd57600080fd5b50356118d5565b34801561071057600080fd5b506106026119bd565b34801561072557600080fd5b506102d36004803603606081101561073c57600080fd5b81359190810190604081016020820135600160201b81111561075d57600080fd5b82018360208201111561076f57600080fd5b803590602001918460018302840111600160201b8311171561079057600080fd5b919390929091602081019035600160201b8111156107ad57600080fd5b8201836020820111156107bf57600080fd5b803590602001918460018302840111600160201b831117156107e057600080fd5b5090925090506119db565b3480156107f757600080fd5b5061053e611d22565b34801561080c57600080fd5b50610602611d82565b34801561082157600080fd5b506102d36004803603602081101561083857600080fd5b5035611d88565b34801561084b57600080fd5b506102d36004803603602081101561086257600080fd5b810190602081018135600160201b81111561087c57600080fd5b82018360208201111561088e57600080fd5b803590602001918460208302840111600160201b831117156108af57600080fd5b50909250905061205e565b3480156108c657600080fd5b506102d3600480360360e08110156108dd57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c00135612286565b34801561092157600080fd5b506102d36004803603602081101561093857600080fd5b503561235a565b34801561094b57600080fd5b506102d3612480565b34801561096057600080fd5b5061060261257e565b34801561097557600080fd5b5061097e612584565b604080516001600160a01b039092168252519081900360200190f35b3480156109a657600080fd5b506102d3600480360360208110156109bd57600080fd5b810190602081018135600160201b8111156109d757600080fd5b8201836020820111156109e957600080fd5b803590602001918460208302840111600160201b83111715610a0a57600080fd5b509092509050612593565b348015610a2157600080fd5b506106026128d7565b348015610a3657600080fd5b5061097e6128dd565b348015610a4b57600080fd5b506102d36128ec565b348015610a6057600080fd5b506102d360048036036020811015610a7757600080fd5b810190602081018135600160201b811115610a9157600080fd5b820183602082011115610aa357600080fd5b803590602001918460018302840111600160201b83111715610ac457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612949945050505050565b348015610b1157600080fd5b506102d360048036036040811015610b2857600080fd5b506001600160a01b0381351690602001351515612a6c565b348015610b4c57600080fd5b50610295612c26565b348015610b6157600080fd5b506102d360048036036060811015610b7857600080fd5b506001600160a01b03813581169160208101359091169060400135612c35565b348015610ba457600080fd5b506102d360048036036020811015610bbb57600080fd5b5035612daa565b348015610bce57600080fd5b50610602613140565b348015610be357600080fd5b5061060260048036036020811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460208302840111600160201b83111715610c4757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613146945050505050565b348015610c9157600080fd5b506102d360048036036020811015610ca857600080fd5b50356131a0565b348015610cbb57600080fd5b5061097e60048036036020811015610cd257600080fd5b503561334b565b348015610ce557600080fd5b50610295613372565b348015610cfa57600080fd5b50610602613380565b348015610d0f57600080fd5b506102d360048036036020811015610d2657600080fd5b5035613386565b348015610d3957600080fd5b5061060260048036036040811015610d5057600080fd5b506001600160a01b038135169060200135613517565b348015610d7257600080fd5b506102d360048036036020811015610d8957600080fd5b810190602081018135600160201b811115610da357600080fd5b820183602082011115610db557600080fd5b803590602001918460208302840111600160201b83111715610dd657600080fd5b50909250905061368e565b348015610ded57600080fd5b5061060260048036036020811015610e0457600080fd5b50356001600160a01b03166139e2565b6001600160e01b031981166301ffc9a760e01b145b919050565b610e37336139ed565b80610e465750610e4633613a01565b610e92576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a5460ff16610ee1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610f446038805480602002602001604051908101604052809291908181526020018280548015610f3a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f1c575b5050505050613146565b8114610f815760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b610f8d60386000615039565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806110038484613a8c565b905061100e816139ed565b611053576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b95506110dc9450869350899150889081908401838280828437600092019190915250610ff692505050565b6001600160e01b03191614611128576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156111ae57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611190575b5050505050905090565b60366020526000908152604090205460ff1681565b6111d6336139ed565b806111e057503330145b611226576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b61122f82613c77565b611275576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006112818383613517565b905061128c81613c91565b6000611299604154613d31565b90506001600160a01b03841615611332576112be6001600160a01b0385168285613e52565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b505050506113a3565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561138957600080fd5b505af115801561139d573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603e5490565b60606113fe336139ed565b8061140857503330145b61144e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff1661148857600061147b600085613517565b905061148681613c91565b505b61149a846001600160a01b0316613f6a565b80156114aa57506114aa84613f70565b1561167a576000806114bc8685613f8a565b6001600160a01b038216600090815260366020526040902054919350915060ff166114fa5760006114ed8783613517565b90506114f881613c91565b505b61150d6001600160a01b0387168561408b565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061154057fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156115d25781810151838201526020016115ba565b50505050905090810190601f1680156115ff5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561163257818101518382015260200161161a565b50505050905090810190601f16801561165f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506118ce915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106116b95780518252601f19909201916020918201910161169a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461171b576040519150601f19603f3d011682016040523d82523d6000602084013e611720565b606091505b50915091508181906117b05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561177557818101518382015260200161175d565b50505050905090810190601f1680156117a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561182c578181015183820152602001611814565b50505050905090810190601f1680156118595780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561188c578181015183820152602001611874565b50505050905090810190601f1680156118b95780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6118de336139ed565b806118e857503330145b61192e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603e819055603c54811161198657603d5481101561197857603d819055603f5460408051838152602081019290925280516000805160206151738339815191529281900390910190a15b6119818161413c565b6119ba565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000603f544211156119d25750603c5461114a565b50603d5461114a565b6119e433613a01565b611a32576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b60004690506000611aa9823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061417f565b9050631626ba7e60e01b6001600160e01b031916611afd8286868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ff692505050565b6001600160e01b03191614611b49576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6040548714611b8b576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611b936141d0565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611bf3576040519150601f19603f3d011682016040523d82523d6000602084013e611bf8565b606091505b5091509150818190611c4b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611cda578181015183820152602001611cc2565b50505050905090810190601f168015611d075780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156111ae576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611190575050505050905090565b603c5490565b611d9133613a01565b611ddf576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a5460ff16611e2e576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611e8f6038805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114611ecc5760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603854811015611fb3576036600060388381548110611eea57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611fab5760016036600060388481548110611f2957fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603880546037919083908110611f6f57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611ecf565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561203657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612018575b5050935050505060405180910390a161205160386000615039565b50603a805460ff19169055565b612067336139ed565b8061207157503330145b6120b7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156120d25750603a54610100900460ff16155b612123576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff1661217c576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806121c0576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6121cc60398383615057565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d1928592859261223b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff168061229f575061229f614216565b806122ad575060005460ff16155b6122e85760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015612313576000805460ff1961ff0019909116610100171660011790555b61231c8661421c565b612325846142ea565b61232f8888614397565b61233982866144f6565b60418390558015612350576000805461ff00191690555b5050505050505050565b61236333613a01565b6123b1576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b80603e54146123f15760405162461bcd60e51b81526004018080602001828103825260258152602001806152046025913960400191505060405180910390fd5b603c5481116124315760405162461bcd60e51b81526004018080602001828103825260288152602001806150ef6028913960400191505060405180910390fd5b603d819055612443426201518061465a565b603f819055603d546040805191825260208201929092528151600080516020615173833981519152929181900390910190a16119ba603e5461413c565b612489336139ed565b6124d3576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612531576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60415490565b6033546001600160a01b031690565b61259c336139ed565b806125a657503330145b6125ec576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b603a5460ff161580156126075750603a54610100900460ff16155b612658576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612774576126b18282815181106126a457fe5b60200260200101516139ed565b156126fc576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061271357fe5b60200260200101516001600160a01b0316141561276c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161268c565b50603a5462010000900460ff166127ce576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612812576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61281e60388484615057565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261288b9285918591829185019084908082843760009201919091525061314692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603b5490565b6035546001600160a01b031690565b6128f5336139ed565b61293f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6129476141d0565b565b612952336139ed565b8061295c57503330145b6129a2576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8051602080820191906000808060605b86851015612350576129c58660546146b4565b888601805160148201516034909201805193995060609190911c965090945090925090506129fe60546129f8878561465a565b9061465a565b945086851115612a45576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612a5b57506040805160208101909152600081525b612a668484836113f3565b506129b2565b612a75336139ed565b612abf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612b1d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612b625760405162461bcd60e51b81526004018080602001828103825260238152602001806152296023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612bbb57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b612c3e336139ed565b80612c4857503330145b612c8e576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8080612ccb576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612d16576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16612d4f576000612d428484613517565b9050612d4d81613c91565b505b612d5a8484846146f6565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b612db333613a01565b612e01576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b603a54610100900460ff16612e55576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b612eb66039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b8114612ef35760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b60005b603954811015613094576036600060398381548110612f1157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561308c5760006036600060398481548110612f5157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603754612f959060016146b4565b81101561305d5760398281548110612fa957fe5b600091825260209091200154603780546001600160a01b039092169183908110612fcf57fe5b6000918252602090912001546001600160a01b0316141561305557603780546000198101908110612ffc57fe5b600091825260209091200154603780546001600160a01b03909216918390811061302257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061305d565b600101612f87565b50603780548061306957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101612ef6565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561311757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116130f9575b5050935050505060405180910390a161313260396000615039565b50603a805461ff0019169055565b60405481565b60008160405160200180828051906020019060200280838360005b83811015613179578181015183820152602001613161565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6131a9336139ed565b806131b857506131b833613a01565b613204576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b603a54610100900460ff16613258576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6132b96039805480602002602001604051908101604052809291908181526020018280548015610f3a576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610f1c575050505050613146565b81146132f65760405162461bcd60e51b81526004018080602001828103825260238152602001806152766023913960400191505060405180910390fd5b61330260396000615039565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061335857fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b80806133c3576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6133cc336139ed565b806133db57506133db33613a01565b613427576040805162461bcd60e51b815260206004820152601860248201527727b7363c9037bbb732b91037b91031b7b73a3937b63632b960411b604482015290519081900360640190fd5b814711613474576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61347d82613c91565b6134856128dd565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156134bd573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336134e86128dd565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613521614730565b6001600160a01b0316836001600160a01b0316141561354157508061105f565b816001600160a01b038416156135d057600080600061355f876147a6565b505050935093509350508061357b57600094505050505061105f565b816135b6576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6135ca836135c4888561492f565b90614988565b93505050505b60008060006135dd6149ca565b505050935093509350508061362f576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613675576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613683826135c4868661492f565b979650505050505050565b613697336139ed565b806136a157503330145b6136e7576040805162461bcd60e51b815260206004820152601260248201527127b7363c9037bbb732b91037b91039b2b63360711b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156137f6576137338282815181106126a457fe5b1561377e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061379557fe5b60200260200101516001600160a01b031614156137ee576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161371b565b50603a5462010000900460ff161561384d576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561393e576036600085858481811061386857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613936576001603660008686858181106138a457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060378484838181106138f957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613850565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a94929390929091906060830190849080156139ce57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116139b0575b5050935050505060405180910390a1505050565b600061105f82614b39565b6035546001600160a01b0390811691161490565b6000613a0e603454613d31565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015613a5a57600080fd5b505afa158015613a6e573d6000803e3d6000fd5b505050506040513d6020811015613a8457600080fd5b505192915050565b60008151604114613ae4576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b555760405162461bcd60e51b81526004018080602001828103825260228152602001806151516022913960400191505060405180910390fd5b8060ff16601b14158015613b6d57508060ff16601c14155b15613ba95760405162461bcd60e51b81526004018080602001828103825260228152602001806151936022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613c05573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613c6d576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613c83836147a6565b509098975050505050505050565b613c99614bca565b80603d541015613cf0576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603d54613cfd90826146b4565b603d819055603f5460408051928352602083019190915280516000805160206151738339815191529281900390910190a150565b6033546000906001600160a01b0316613d91576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015613ddd57600080fd5b505afa158015613df1573d6000803e3d6000fd5b505050506040513d6020811015613e0757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015613a5a57600080fd5b801580613ed8575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015613eaa57600080fd5b505afa158015613ebe573d6000803e3d6000fd5b505050506040513d6020811015613ed457600080fd5b5051155b613f135760405162461bcd60e51b81526004018080602001828103825260368152602001806152996036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613f6590849061408b565b505050565b3b151590565b600080613f7c836147a6565b509198975050505050505050565b600080613f98603b54613d31565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614003578181015183820152602001613feb565b50505050905090810190601f1680156140305780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561404d57600080fd5b505afa158015614061573d6000803e3d6000fd5b505050506040513d604081101561407757600080fd5b508051602090910151909590945092505050565b60606140e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c1a9092919063ffffffff16565b805190915015613f65578080602001905160208110156140ff57600080fd5b5051613f655760405162461bcd60e51b815260040180806020018281038252602a81526020018061524c602a913960400191505060405180910390fd5b603c819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604080546001018082558151338152602081019190915281517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff929181900390910190a1565b303b1590565b600054610100900460ff16806142355750614235614216565b80614243575060005460ff16155b61427e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff161580156142a9576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156142d457603380546001600160a01b0319166001600160a01b0384161790555b80156142e6576000805461ff00191690555b5050565b600054610100900460ff16806143035750614303614216565b80614311575060005460ff16155b61434c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614377576000805460ff1961ff0019909116610100171660011790555b81156142d457603482905580156142e6576000805461ff00191690555050565b600054610100900460ff16806143b057506143b0614216565b806143be575060005460ff16155b6143f95760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614424576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff91041661449c57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015613f65576000805461ff0019169055505050565b600054610100900460ff168061450f575061450f614216565b8061451d575060005460ff16155b6145585760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614583576000805460ff1961ff0019909116610100171660011790555b61458c82614c29565b60006145966149ca565b5050505050915050600081116145e3576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603c819055603d819055603e819055614602426201518061465a565b603f81905560408051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a150508015613f65576000805461ff0019169055505050565b6000828201838110156118ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006118ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614cd6565b6001600160a01b03821661471c576147176001600160a01b03841682614d30565b613f65565b613f656001600160a01b0383168483614e15565b600061473d603b54613d31565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561477557600080fd5b505afa158015614789573d6000803e3d6000fd5b505050506040513d602081101561479f57600080fd5b5051905090565b60606000806000806000806147bc603b54613d31565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561480857600080fd5b505afa15801561481c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561484557600080fd5b8101908080516040519392919084600160201b82111561486457600080fd5b90830190602082018581111561487957600080fd5b8251600160201b81118282018810171561489257600080fd5b82525081516020918201929091019080838360005b838110156148bf5781810151838201526020016148a7565b50505050905090810190601f1680156148ec5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261493e5750600061105f565b8282028284828161494b57fe5b04146118ce5760405162461bcd60e51b81526004018080602001828103825260218152602001806151b56021913960400191505060405180910390fd5b60006118ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614e67565b60606000806000806000806149e0603b54613d31565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614a1857600080fd5b505afa158015614a2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614a5557600080fd5b8101908080516040519392919084600160201b821115614a7457600080fd5b908301906020820185811115614a8957600080fd5b8251600160201b811182820188101715614aa257600080fd5b82525081516020918201929091019080838360005b83811015614acf578181015183820152602001614ab7565b50505050905090810190601f168015614afc5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b03821615614bc357604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015614b9057600080fd5b505afa158015614ba4573d6000803e3d6000fd5b505050506040513d6020811015614bba57600080fd5b50519050610e29565b5047610e29565b603f5442111561294757614be1426201518061465a565b603f819055603c54603d8190556040805191825260208201929092528151600080516020615173833981519152929181900390910190a1565b60606111348484600085614ecc565b600054610100900460ff1680614c425750614c42614216565b80614c50575060005460ff16155b614c8b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806151d6602e913960400191505060405180910390fd5b600054610100900460ff16158015614cb6576000805460ff1961ff0019909116610100171660011790555b81156142d457603b82905580156142e6576000805461ff00191690555050565b60008184841115614d285760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b505050900390565b80471015614d85576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114614dd0576040519150601f19603f3d011682016040523d82523d6000602084013e614dd5565b606091505b5050905080613f655760405162461bcd60e51b815260040180806020018281038252603a815260200180615117603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613f6590849061408b565b60008183614eb65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561177557818101518382015260200161175d565b506000838581614ec257fe5b0495945050505050565b6060614ed785613f6a565b614f28576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614f675780518252601f199092019160209182019101614f48565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614fc9576040519150601f19603f3d011682016040523d82523d6000602084013e614fce565b606091505b50915091508115614fe25791506111349050565b805115614ff25780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561177557818101518382015260200161175d565b50805460008255906000526020600020908101906119ba91906150ba565b8280548282559060005260206000209081019282156150aa579160200282015b828111156150aa5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615077565b506150b69291506150cf565b5090565b5b808211156150b657600081556001016150bb565b5b808211156150b65780546001600160a01b03191681556001016150d056fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e65416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220c8373a9a46fb86d60e45a8899de141e4978201ff8420790c529c6d9fdde9bfca64736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b506158f5806200008a6000396000f3fe6080604052600436106102885760003560e01c8063747c31d61161015a578063cbd2ac68116100c1578063de212bf31161007a578063de212bf314610d77578063e2b4ce9714610d8c578063e61c51ca14610da1578063f36febda14610dcb578063f421764814610e04578063f8b2cb4f14610e7f57610288565b8063cbd2ac6814610c21578063cccdc55614610c4b578063cd7958dd14610c60578063ce0b5bd514610d0e578063cf0a866b14610d38578063d251fefc14610d4d57610288565b806390e690c71161011357806390e690c714610ab3578063aaf1fc6214610ac8578063ad95580b14610b79578063b242e53414610b8e578063be40ba7914610bc9578063beabacc814610bde57610288565b8063747c31d6146109b15780637b580e75146109c65780637d73b231146109f95780637fd004fa14610a0e578063877337b014610a895780638da5cb5b14610a9e57610288565b80633f579f42116101fe5780634d9aa248116101b75780634d9aa2481461085d5780635adc02ab146108725780636137d6701461089c57806369efdfc0146109175780636c37a7e614610972578063715018a61461099c57610288565b80633f579f4214610640578063458d07f21461070657806345b12efc1461073057806346efe0ed1461074557806347b55a9d1461081757806347d125af1461082c57610288565b80632121dc75116102505780632121dc751461052b57806326d05ab214610540578063294f40251461055557806332531c3c146105ba5780633a43199f146105ed5780633b8252fa1461061957610288565b806301ffc9a71461028d578063100f23fd146102d55780631127b57e146103015780631626ba7e1461038b57806320c13b0b14610460575b600080fd5b34801561029957600080fd5b506102c1600480360360208110156102b057600080fd5b50356001600160e01b031916610eb2565b604080519115158252519081900360200190f35b3480156102e157600080fd5b506102ff600480360360208110156102f857600080fd5b5035610ecc565b005b34801561030d57600080fd5b5061031661106c565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610350578181015183820152602001610338565b50505050905090810190601f16801561037d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039757600080fd5b50610443600480360360408110156103ae57600080fd5b81359190810190604081016020820135600160201b8111156103cf57600080fd5b8201836020820111156103e157600080fd5b803590602001918460018302840111600160201b8311171561040257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061108d945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561046c57600080fd5b506104436004803603604081101561048357600080fd5b810190602081018135600160201b81111561049d57600080fd5b8201836020820111156104af57600080fd5b803590602001918460018302840111600160201b831117156104d057600080fd5b919390929091602081019035600160201b8111156104ed57600080fd5b8201836020820111156104ff57600080fd5b803590602001918460018302840111600160201b8311171561052057600080fd5b5090925090506110fc565b34801561053757600080fd5b506102c16111d3565b34801561054c57600080fd5b506102c16111e4565b34801561056157600080fd5b5061056a6111ed565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105a657818101518382015260200161058e565b505050509050019250505060405180910390f35b3480156105c657600080fd5b506102c1600480360360208110156105dd57600080fd5b50356001600160a01b031661124f565b6102ff6004803603604081101561060357600080fd5b506001600160a01b038135169060200135611264565b34801561062557600080fd5b5061062e611483565b60408051918252519081900360200190f35b34801561064c57600080fd5b506103166004803603606081101561066357600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561069257600080fd5b8201836020820111156106a457600080fd5b803590602001918460018302840111600160201b831117156106c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611489945050505050565b34801561071257600080fd5b506102ff6004803603602081101561072957600080fd5b503561196a565b34801561073c57600080fd5b5061062e611a51565b34801561075157600080fd5b506102ff6004803603606081101561076857600080fd5b81359190810190604081016020820135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b919390929091602081019035600160201b8111156107d957600080fd5b8201836020820111156107eb57600080fd5b803590602001918460018302840111600160201b8311171561080c57600080fd5b509092509050611a6f565b34801561082357600080fd5b5061056a611e14565b34801561083857600080fd5b50610841611e74565b604080516001600160a01b039092168252519081900360200190f35b34801561086957600080fd5b5061062e611e83565b34801561087e57600080fd5b506102ff6004803603602081101561089557600080fd5b5035611e89565b3480156108a857600080fd5b506102ff600480360360208110156108bf57600080fd5b810190602081018135600160201b8111156108d957600080fd5b8201836020820111156108eb57600080fd5b803590602001918460208302840111600160201b8311171561090c57600080fd5b5090925090506121bd565b34801561092357600080fd5b506102ff600480360360e081101561093a57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356123e4565b34801561097e57600080fd5b506102ff6004803603602081101561099557600080fd5b50356124c0565b3480156109a857600080fd5b506102ff612641565b3480156109bd57600080fd5b5061062e61273c565b3480156109d257600080fd5b506102ff600480360360208110156109e957600080fd5b50356001600160a01b0316612742565b348015610a0557600080fd5b5061084161290d565b348015610a1a57600080fd5b506102ff60048036036020811015610a3157600080fd5b810190602081018135600160201b811115610a4b57600080fd5b820183602082011115610a5d57600080fd5b803590602001918460208302840111600160201b83111715610a7e57600080fd5b50909250905061291c565b348015610a9557600080fd5b5061062e612c5f565b348015610aaa57600080fd5b50610841612c65565b348015610abf57600080fd5b506102ff612c74565b348015610ad457600080fd5b506102ff60048036036020811015610aeb57600080fd5b810190602081018135600160201b811115610b0557600080fd5b820183602082011115610b1757600080fd5b803590602001918460018302840111600160201b83111715610b3857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612cce945050505050565b348015610b8557600080fd5b506102ff612df0565b348015610b9a57600080fd5b506102ff60048036036040811015610bb157600080fd5b506001600160a01b0381351690602001351515612ef7565b348015610bd557600080fd5b506102c16130ae565b348015610bea57600080fd5b506102ff60048036036060811015610c0157600080fd5b506001600160a01b038135811691602081013590911690604001356130bd565b348015610c2d57600080fd5b506102ff60048036036020811015610c4457600080fd5b5035613231565b348015610c5757600080fd5b5061062e613625565b348015610c6c57600080fd5b5061062e60048036036020811015610c8357600080fd5b810190602081018135600160201b811115610c9d57600080fd5b820183602082011115610caf57600080fd5b803590602001918460208302840111600160201b83111715610cd057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061362b945050505050565b348015610d1a57600080fd5b506102ff60048036036020811015610d3157600080fd5b5035613685565b348015610d4457600080fd5b506102c1613829565b348015610d5957600080fd5b5061084160048036036020811015610d7057600080fd5b5035613839565b348015610d8357600080fd5b506102c1613860565b348015610d9857600080fd5b5061062e61386e565b348015610dad57600080fd5b506102ff60048036036020811015610dc457600080fd5b5035613874565b348015610dd757600080fd5b5061062e60048036036040811015610dee57600080fd5b506001600160a01b0381351690602001356139fe565b348015610e1057600080fd5b506102ff60048036036020811015610e2757600080fd5b810190602081018135600160201b811115610e4157600080fd5b820183602082011115610e5357600080fd5b803590602001918460208302840111600160201b83111715610e7457600080fd5b509092509050613b75565b348015610e8b57600080fd5b5061062e60048036036020811015610ea257600080fd5b50356001600160a01b0316613ec8565b6001600160e01b031981166301ffc9a760e01b145b919050565b610ed533613ed3565b80610ee45750610ee433613ee7565b610f29576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16610f78576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610fdb6039805480602002602001604051908101604052809291908181526020018280548015610fd157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fb3575b505050505061362b565b81146110185760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b61102460396000615608565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b60008061109a8484613f23565b90506110a581613ed3565b6110ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611173945086935089915088908190840183828082843760009201919091525061108d92505050565b6001600160e01b031916146111bf576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561124557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611227575b5050505050905090565b60376020526000908152604090205460ff1681565b61126d33613ed3565b8061127757503330145b6112bc576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6112c58261410e565b61130b576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061131783836139fe565b905061132281614128565b600061132f6042546141c4565b90506001600160a01b038416156113c8576113546001600160a01b0385168285614317565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b50505050611439565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b606061149433613ed3565b8061149e57503330145b6114e3576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff1661151d5760006115106000856139fe565b905061151b81614128565b505b61152f846001600160a01b031661442f565b801561153f575061153f84614435565b1561170f57600080611551868561444f565b6001600160a01b038216600090815260376020526040902054919350915060ff1661158f57600061158287836139fe565b905061158d81614128565b505b6115a26001600160a01b03871685614550565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f815181106115d557fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561166757818101518382015260200161164f565b50505050905090810190601f1680156116945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156116c75781810151838201526020016116af565b50505050905090810190601f1680156116f45780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611963915050565b60006060856001600160a01b031685856040518082805190602001908083835b6020831061174e5780518252601f19909201916020918201910161172f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146117b0576040519150601f19603f3d011682016040523d82523d6000602084013e6117b5565b606091505b50915091508181906118455760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561180a5781810151838201526020016117f2565b50505050905090810190601f1680156118375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156118c15781810151838201526020016118a9565b50505050905090810190601f1680156118ee5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611921578181015183820152602001611909565b50505050905090810190601f16801561194e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b61197333613ed3565b8061197d57503330145b6119c2576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611a1a57603e54811015611a0c57603e81905560408054815183815260208101919091528151600080516020615764833981519152929181900390910190a15b611a1581614601565b611a4e565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611a665750603d546111e1565b50603e546111e1565b603554600160a81b900460ff1615611adb57611a8a33614644565b611ad6576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b611b24565b6036546001600160a01b03163314611b245760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b60004690506000611b9b823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061469d565b9050631626ba7e60e01b6001600160e01b031916611bef8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061108d92505050565b6001600160e01b03191614611c3b576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6041548714611c7d576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611c856146ee565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611ce5576040519150601f19603f3d011682016040523d82523d6000602084013e611cea565b606091505b5091509150818190611d3d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611dcc578181015183820152602001611db4565b50505050905090810190601f168015611df95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611245576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611227575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160a81b900460ff1615611ef557611ea433614644565b611ef0576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b611f3e565b6036546001600160a01b03163314611f3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b603b5460ff16611f8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611fee6039805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b811461202b5760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b60005b60395481101561211257603760006039838154811061204957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1661210a576001603760006039848154811061208857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556039805460389190839081106120ce57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b60010161202e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561219557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612177575b5050935050505060405180910390a16121b060396000615608565b50603b805460ff19169055565b6121c633613ed3565b806121d057503330145b612215576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156122305750603b54610100900460ff16155b612281576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166122da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061231e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61232a603a8383615626565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926123999285918591829185019084908082843760009201919091525061362b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806123fd57506123fd614736565b8061240b575060005460ff16155b6124465760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015612471576000805460ff1961ff0019909116610100171660011790555b61247961473c565b612482866147f0565b61248b846148be565b612495888861496b565b61249f8286614aca565b604283905580156124b6576000805461ff00191690555b5050505050505050565b603554600160a81b900460ff161561252c576124db33614644565b612527576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b612575565b6036546001600160a01b031633146125755760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b80603f54146125b55760405162461bcd60e51b81526004018080602001828103825260258152602001806157f56025913960400191505060405180910390fd5b603d5481116125f55760405162461bcd60e51b81526004018080602001828103825260288152602001806156be6028913960400191505060405180910390fd5b603e8190556126074262015180614c2c565b6040818155603e548151908152602081019290925280516000805160206157648339815191529281900390910190a1611a4e603f54614601565b61264a33613ed3565b612691576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166126ef576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61274b33613ed3565b612792576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6001600160a01b0381166127ed576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612846576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b0381163014156128a4576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60a81b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61292533613ed3565b8061292f57503330145b612974576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff1615801561298f5750603b54610100900460ff16155b6129e0576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612afc57612a39828281518110612a2c57fe5b6020026020010151613ed3565b15612a84576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612a9b57fe5b60200260200101516001600160a01b03161415612af4576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612a14565b50603b5462010000900460ff16612b56576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612b9a576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ba660398484615626565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612c139285918591829185019084908082843760009201919091525061362b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612c7d33613ed3565b612cc4576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612ccc6146ee565b565b612cd733613ed3565b80612ce157503330145b612d26576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156124b657612d49866054614c86565b888601805160148201516034909201805193995060609190911c96509094509092509050612d826054612d7c8785614c2c565b90614c2c565b945086851115612dc9576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612ddf57506040805160208101909152600081525b612dea848483611489565b50612d36565b612df933613ed3565b612e40576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a81b900460ff1615612e9f576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60a81b1916600160a81b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612f0033613ed3565b612f47576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612fa5576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612fea5760405162461bcd60e51b815260040180806020018281038252602381526020018061581a6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061304357604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b6130c633613ed3565b806130d057503330145b613115576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080613152576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b03841661319d576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff166131d65760006131c984846139fe565b90506131d481614128565b505b6131e1848484614cc8565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160a81b900460ff161561329d5761324c33614644565b613298576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6132e6565b6036546001600160a01b031633146132e65760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b603b54610100900460ff1661333a576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61339b603a805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b81146133d85760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b60005b603a548110156135795760376000603a83815481106133f657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561357157600060376000603a848154811061343657fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b60385461347a906001614c86565b81101561354257603a828154811061348e57fe5b600091825260209091200154603880546001600160a01b0390921691839081106134b457fe5b6000918252602090912001546001600160a01b0316141561353a576038805460001981019081106134e157fe5b600091825260209091200154603880546001600160a01b03909216918390811061350757fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613542565b60010161346c565b50603880548061354e57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b6001016133db565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156135fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116135de575b5050935050505060405180910390a1613617603a6000615608565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b8381101561365e578181015183820152602001613646565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61368e33613ed3565b8061369d575061369d33613ee7565b6136e2576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff16613736576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613797603a805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b81146137d45760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b6137e0603a6000615608565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b6038818154811061384657fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b80806138b1576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6138ba33613ed3565b806138c957506138c933613ee7565b61390e576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b81471161395b576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61396482614128565b61396c612c65565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156139a4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336139cf612c65565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613a08614d02565b6001600160a01b0316836001600160a01b03161415613a285750806110f6565b816001600160a01b03841615613ab7576000806000613a4687614d78565b5050509350935093505080613a625760009450505050506110f6565b81613a9d576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613ab183613aab8885614f01565b90614f5a565b93505050505b6000806000613ac4614f9c565b5050509350935093505080613b16576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613b5c576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613b6a82613aab8686614f01565b979650505050505050565b613b7e33613ed3565b80613b8857503330145b613bcd576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613cdc57613c19828281518110612a2c57fe5b15613c64576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613c7b57fe5b60200260200101516001600160a01b03161415613cd4576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613c01565b50603b5462010000900460ff1615613d33576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613e245760376000858584818110613d4e57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613e1c57600160376000868685818110613d8a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613ddf57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613d36565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613eb457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e96575b5050935050505060405180910390a1505050565b60006110f68261510b565b6035546001600160a01b0390811691161490565b603554600090600160a81b900460ff1615613f0c57613f0582614644565b9050610ec7565b506036546001600160a01b03828116911614610ec7565b60008151604114613f7b576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613fec5760405162461bcd60e51b81526004018080602001828103825260228152602001806157426022913960400191505060405180910390fd5b8060ff16601b1415801561400457508060ff16601c14155b156140405760405162461bcd60e51b81526004018080602001828103825260228152602001806157846022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561409c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614104576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b60008061411a83614d78565b509098975050505050505050565b61413061519c565b80603e541015614187576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e546141949082614c86565b603e819055604080548151928352602083015280516000805160206157648339815191529281900390910190a150565b6033546000906001600160a01b0316614224576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561427057600080fd5b505afa158015614284573d6000803e3d6000fd5b505050506040513d602081101561429a57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156142e557600080fd5b505afa1580156142f9573d6000803e3d6000fd5b505050506040513d602081101561430f57600080fd5b505192915050565b80158061439d575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561436f57600080fd5b505afa158015614383573d6000803e3d6000fd5b505050506040513d602081101561439957600080fd5b5051155b6143d85760405162461bcd60e51b815260040180806020018281038252603681526020018061588a6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261442a908490614550565b505050565b3b151590565b60008061444183614d78565b509198975050505050505050565b60008061445d603c546141c4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156144c85781810151838201526020016144b0565b50505050905090810190601f1680156144f55780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561451257600080fd5b505afa158015614526573d6000803e3d6000fd5b505050506040513d604081101561453c57600080fd5b508051602090910151909590945092505050565b60606145a5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166151e99092919063ffffffff16565b80519091501561442a578080602001905160208110156145c457600080fd5b505161442a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061583d602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b60006146516034546141c4565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156142e557600080fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b303b1590565b600054610100900460ff16806147555750614755614736565b80614763575060005460ff16155b61479e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff161580156147c9576000805460ff1961ff0019909116610100171660011790555b6035805460ff60a81b1916600160a81b1790558015611a4e576000805461ff001916905550565b600054610100900460ff16806148095750614809614736565b80614817575060005460ff16155b6148525760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff1615801561487d576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156148a857603380546001600160a01b0319166001600160a01b0384161790555b80156148ba576000805461ff00191690555b5050565b600054610100900460ff16806148d757506148d7614736565b806148e5575060005460ff16155b6149205760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff1615801561494b576000805460ff1961ff0019909116610100171660011790555b81156148a857603482905580156148ba576000805461ff00191690555050565b600054610100900460ff16806149845750614984614736565b80614992575060005460ff16155b6149cd5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff161580156149f8576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614a7057604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1801561442a576000805461ff0019169055505050565b600054610100900460ff1680614ae35750614ae3614736565b80614af1575060005460ff16155b614b2c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015614b57576000805460ff1961ff0019909116610100171660011790555b614b60826151f8565b6000614b6a614f9c565b505050505091505060008111614bb7576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614bd64262015180614c2c565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a15050801561442a576000805461ff0019169055505050565b600082820183811015611963576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061196383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506152a5565b6001600160a01b038216614cee57614ce96001600160a01b038416826152ff565b61442a565b61442a6001600160a01b03831684836153e4565b6000614d0f603c546141c4565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614d4757600080fd5b505afa158015614d5b573d6000803e3d6000fd5b505050506040513d6020811015614d7157600080fd5b5051905090565b6060600080600080600080614d8e603c546141c4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614dda57600080fd5b505afa158015614dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614e1757600080fd5b8101908080516040519392919084600160201b821115614e3657600080fd5b908301906020820185811115614e4b57600080fd5b8251600160201b811182820188101715614e6457600080fd5b82525081516020918201929091019080838360005b83811015614e91578181015183820152602001614e79565b50505050905090810190601f168015614ebe5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614f10575060006110f6565b82820282848281614f1d57fe5b04146119635760405162461bcd60e51b81526004018080602001828103825260218152602001806157a66021913960400191505060405180910390fd5b600061196383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615436565b6060600080600080600080614fb2603c546141c4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614fea57600080fd5b505afa158015614ffe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561502757600080fd5b8101908080516040519392919084600160201b82111561504657600080fd5b90830190602082018581111561505b57600080fd5b8251600160201b81118282018810171561507457600080fd5b82525081516020918201929091019080838360005b838110156150a1578181015183820152602001615089565b50505050905090810190601f1680156150ce5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561519557604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561516257600080fd5b505afa158015615176573d6000803e3d6000fd5b505050506040513d602081101561518c57600080fd5b50519050610ec7565b5047610ec7565b604054421115612ccc576151b34262015180614c2c565b6040818155603d54603e8190558151908152602081019290925280516000805160206157648339815191529281900390910190a1565b60606111cb848460008561549b565b600054610100900460ff16806152115750615211614736565b8061521f575060005460ff16155b61525a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015615285576000805460ff1961ff0019909116610100171660011790555b81156148a857603c82905580156148ba576000805461ff00191690555050565b600081848411156152f75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b505050900390565b80471015615354576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d806000811461539f576040519150601f19603f3d011682016040523d82523d6000602084013e6153a4565b606091505b505090508061442a5760405162461bcd60e51b815260040180806020018281038252603a815260200180615708603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261442a908490614550565b600081836154855760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b50600083858161549157fe5b0495945050505050565b60606154a68561442f565b6154f7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106155365780518252601f199092019160209182019101615517565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615598576040519150601f19603f3d011682016040523d82523d6000602084013e61559d565b606091505b509150915081156155b15791506111cb9050565b8051156155c15780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561180a5781810151838201526020016117f2565b5080546000825590600052602060002090810190611a4e9190615689565b828054828255906000526020600020908101928215615679579160200282015b828111156156795781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615646565b5061568592915061569e565b5090565b5b80821115615685576000815560010161568a565b5b808211156156855780546001600160a01b031916815560010161569f56fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212201bc91f3d02ca0b5a306e627538f75ed2545c15bb103332d0a58674649fd0850964736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { @@ -553,6 +553,32 @@ func (_Wallet *WalletCallerSession) LicenceNode() ([32]byte, error) { return _Wallet.Contract.LicenceNode(&_Wallet.CallOpts) } +// Monolith2FA is a free data retrieval call binding the contract method 0xcf0a866b. +// +// Solidity: function monolith2FA() constant returns(bool) +func (_Wallet *WalletCaller) Monolith2FA(opts *bind.CallOpts) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _Wallet.contract.Call(opts, out, "monolith2FA") + return *ret0, err +} + +// Monolith2FA is a free data retrieval call binding the contract method 0xcf0a866b. +// +// Solidity: function monolith2FA() constant returns(bool) +func (_Wallet *WalletSession) Monolith2FA() (bool, error) { + return _Wallet.Contract.Monolith2FA(&_Wallet.CallOpts) +} + +// Monolith2FA is a free data retrieval call binding the contract method 0xcf0a866b. +// +// Solidity: function monolith2FA() constant returns(bool) +func (_Wallet *WalletCallerSession) Monolith2FA() (bool, error) { + return _Wallet.Contract.Monolith2FA(&_Wallet.CallOpts) +} + // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() constant returns(address) @@ -631,6 +657,32 @@ func (_Wallet *WalletCallerSession) PendingWhitelistRemoval() ([]common.Address, return _Wallet.Contract.PendingWhitelistRemoval(&_Wallet.CallOpts) } +// Personal2FA is a free data retrieval call binding the contract method 0x47d125af. +// +// Solidity: function personal2FA() constant returns(address) +func (_Wallet *WalletCaller) Personal2FA(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _Wallet.contract.Call(opts, out, "personal2FA") + return *ret0, err +} + +// Personal2FA is a free data retrieval call binding the contract method 0x47d125af. +// +// Solidity: function personal2FA() constant returns(address) +func (_Wallet *WalletSession) Personal2FA() (common.Address, error) { + return _Wallet.Contract.Personal2FA(&_Wallet.CallOpts) +} + +// Personal2FA is a free data retrieval call binding the contract method 0x47d125af. +// +// Solidity: function personal2FA() constant returns(address) +func (_Wallet *WalletCallerSession) Personal2FA() (common.Address, error) { + return _Wallet.Contract.Personal2FA(&_Wallet.CallOpts) +} + // RelayNonce is a free data retrieval call binding the contract method 0xcccdc556. // // Solidity: function relayNonce() constant returns(uint256) @@ -1065,6 +1117,48 @@ func (_Wallet *WalletTransactorSession) RenounceOwnership() (*types.Transaction, return _Wallet.Contract.RenounceOwnership(&_Wallet.TransactOpts) } +// SetMonolith2FA is a paid mutator transaction binding the contract method 0xad95580b. +// +// Solidity: function setMonolith2FA() returns() +func (_Wallet *WalletTransactor) SetMonolith2FA(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Wallet.contract.Transact(opts, "setMonolith2FA") +} + +// SetMonolith2FA is a paid mutator transaction binding the contract method 0xad95580b. +// +// Solidity: function setMonolith2FA() returns() +func (_Wallet *WalletSession) SetMonolith2FA() (*types.Transaction, error) { + return _Wallet.Contract.SetMonolith2FA(&_Wallet.TransactOpts) +} + +// SetMonolith2FA is a paid mutator transaction binding the contract method 0xad95580b. +// +// Solidity: function setMonolith2FA() returns() +func (_Wallet *WalletTransactorSession) SetMonolith2FA() (*types.Transaction, error) { + return _Wallet.Contract.SetMonolith2FA(&_Wallet.TransactOpts) +} + +// SetPersonal2FA is a paid mutator transaction binding the contract method 0x7b580e75. +// +// Solidity: function setPersonal2FA(address _p2FA) returns() +func (_Wallet *WalletTransactor) SetPersonal2FA(opts *bind.TransactOpts, _p2FA common.Address) (*types.Transaction, error) { + return _Wallet.contract.Transact(opts, "setPersonal2FA", _p2FA) +} + +// SetPersonal2FA is a paid mutator transaction binding the contract method 0x7b580e75. +// +// Solidity: function setPersonal2FA(address _p2FA) returns() +func (_Wallet *WalletSession) SetPersonal2FA(_p2FA common.Address) (*types.Transaction, error) { + return _Wallet.Contract.SetPersonal2FA(&_Wallet.TransactOpts, _p2FA) +} + +// SetPersonal2FA is a paid mutator transaction binding the contract method 0x7b580e75. +// +// Solidity: function setPersonal2FA(address _p2FA) returns() +func (_Wallet *WalletTransactorSession) SetPersonal2FA(_p2FA common.Address) (*types.Transaction, error) { + return _Wallet.Contract.SetPersonal2FA(&_Wallet.TransactOpts, _p2FA) +} + // SetWhitelist is a paid mutator transaction binding the contract method 0xf4217648. // // Solidity: function setWhitelist(address[] _addresses) returns() @@ -2687,6 +2781,273 @@ func (_Wallet *WalletFilterer) ParseSetDailyLimit(log types.Log) (*WalletSetDail return event, nil } +// WalletSetMonolith2FAIterator is returned from FilterSetMonolith2FA and is used to iterate over the raw logs and unpacked data for SetMonolith2FA events raised by the Wallet contract. +type WalletSetMonolith2FAIterator struct { + Event *WalletSetMonolith2FA // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletSetMonolith2FAIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletSetMonolith2FA) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletSetMonolith2FA) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletSetMonolith2FAIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletSetMonolith2FAIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletSetMonolith2FA represents a SetMonolith2FA event raised by the Wallet contract. +type WalletSetMonolith2FA struct { + Sender common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetMonolith2FA is a free log retrieval operation binding the contract event 0xea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a86969. +// +// Solidity: event SetMonolith2FA(address _sender) +func (_Wallet *WalletFilterer) FilterSetMonolith2FA(opts *bind.FilterOpts) (*WalletSetMonolith2FAIterator, error) { + + logs, sub, err := _Wallet.contract.FilterLogs(opts, "SetMonolith2FA") + if err != nil { + return nil, err + } + return &WalletSetMonolith2FAIterator{contract: _Wallet.contract, event: "SetMonolith2FA", logs: logs, sub: sub}, nil +} + +// WatchSetMonolith2FA is a free log subscription operation binding the contract event 0xea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a86969. +// +// Solidity: event SetMonolith2FA(address _sender) +func (_Wallet *WalletFilterer) WatchSetMonolith2FA(opts *bind.WatchOpts, sink chan<- *WalletSetMonolith2FA) (event.Subscription, error) { + + logs, sub, err := _Wallet.contract.WatchLogs(opts, "SetMonolith2FA") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletSetMonolith2FA) + if err := _Wallet.contract.UnpackLog(event, "SetMonolith2FA", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetMonolith2FA is a log parse operation binding the contract event 0xea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a86969. +// +// Solidity: event SetMonolith2FA(address _sender) +func (_Wallet *WalletFilterer) ParseSetMonolith2FA(log types.Log) (*WalletSetMonolith2FA, error) { + event := new(WalletSetMonolith2FA) + if err := _Wallet.contract.UnpackLog(event, "SetMonolith2FA", log); err != nil { + return nil, err + } + return event, nil +} + +// WalletSetPersonal2FAIterator is returned from FilterSetPersonal2FA and is used to iterate over the raw logs and unpacked data for SetPersonal2FA events raised by the Wallet contract. +type WalletSetPersonal2FAIterator struct { + Event *WalletSetPersonal2FA // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletSetPersonal2FAIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletSetPersonal2FA) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletSetPersonal2FA) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletSetPersonal2FAIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletSetPersonal2FAIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletSetPersonal2FA represents a SetPersonal2FA event raised by the Wallet contract. +type WalletSetPersonal2FA struct { + Sender common.Address + P2FA common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetPersonal2FA is a free log retrieval operation binding the contract event 0x33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c. +// +// Solidity: event SetPersonal2FA(address _sender, address _p2FA) +func (_Wallet *WalletFilterer) FilterSetPersonal2FA(opts *bind.FilterOpts) (*WalletSetPersonal2FAIterator, error) { + + logs, sub, err := _Wallet.contract.FilterLogs(opts, "SetPersonal2FA") + if err != nil { + return nil, err + } + return &WalletSetPersonal2FAIterator{contract: _Wallet.contract, event: "SetPersonal2FA", logs: logs, sub: sub}, nil +} + +// WatchSetPersonal2FA is a free log subscription operation binding the contract event 0x33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c. +// +// Solidity: event SetPersonal2FA(address _sender, address _p2FA) +func (_Wallet *WalletFilterer) WatchSetPersonal2FA(opts *bind.WatchOpts, sink chan<- *WalletSetPersonal2FA) (event.Subscription, error) { + + logs, sub, err := _Wallet.contract.WatchLogs(opts, "SetPersonal2FA") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletSetPersonal2FA) + if err := _Wallet.contract.UnpackLog(event, "SetPersonal2FA", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetPersonal2FA is a log parse operation binding the contract event 0x33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c. +// +// Solidity: event SetPersonal2FA(address _sender, address _p2FA) +func (_Wallet *WalletFilterer) ParseSetPersonal2FA(log types.Log) (*WalletSetPersonal2FA, error) { + event := new(WalletSetPersonal2FA) + if err := _Wallet.contract.UnpackLog(event, "SetPersonal2FA", log); err != nil { + return nil, err + } + return event, nil +} + // WalletSubmittedDailyLimitUpdateIterator is returned from FilterSubmittedDailyLimitUpdate and is used to iterate over the raw logs and unpacked data for SubmittedDailyLimitUpdate events raised by the Wallet contract. type WalletSubmittedDailyLimitUpdateIterator struct { Event *WalletSubmittedDailyLimitUpdate // Event containing the contract specifics and raw log diff --git a/pkg/bindings/walletCache.go b/pkg/bindings/walletCache.go index 3a852666..0737f6e1 100644 --- a/pkg/bindings/walletCache.go +++ b/pkg/bindings/walletCache.go @@ -31,7 +31,7 @@ var ( const WalletCacheABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_walletImplementation_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_defaultDailyLimit_\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletDeployerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"addresspayable\",\"name\":\"_wallet\",\"type\":\"address\"}],\"name\":\"CachedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"cacheWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"cachedWallets\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cachedWalletsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultDailyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCachePop\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletDeployerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletCacheBin is the compiled bytecode used for deploying new contracts. -var WalletCacheBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306035557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966036557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386037553480156100c157600080fd5b50604051610c4e380380610c4e833981810160405260e08110156100e457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919061011a86610173565b61012384610241565b603880546001600160a01b0319166001600160a01b0389161790556039859055821561014f5760358390555b811561015b5760368290555b80156101675760378190555b505050505050506102f4565b600054610100900460ff168061018c575061018c6102ee565b8061019a575060005460ff16155b6101d55760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff16158015610200576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561022b57603380546001600160a01b0319166001600160a01b0384161790555b801561023d576000805461ff00191690555b5050565b600054610100900460ff168061025a575061025a6102ee565b80610268575060005460ff16155b6102a35760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff161580156102ce576000805460ff1961ff0019909116610100171660011790555b811561022b576034829055801561023d576000805461ff00191690555050565b303b1590565b61091d806103036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063877337b011610071578063877337b01461010657806387e8bed11461010e578063a4570e5114610116578063c76b08881461011e578063e2b4ce9714610126578063fc6cabe71461012e576100a9565b806360dbc5de146100ae57806371b9076a146100b8578063747c31d6146100d25780637d73b231146100da5780638117abc1146100fe575b600080fd5b6100b661014b565b005b6100c06102f5565b60408051918252519081900360200190f35b6100c06102fb565b6100e2610301565b604080516001600160a01b039092168252519081900360200190f35b6100e2610310565b6100c061031f565b6100c0610325565b6100e261032b565b6100c0610412565b6100c0610418565b6100e26004803603602081101561014457600080fd5b503561041e565b6000610158603754610445565b6038546040519192506000916001600160a01b039091169061017990610598565b6001600160a01b03909116815260406020820181905260008183018190529051918290036080019190f0801580156101b5573d6000803e3d6000fd5b509050806001600160a01b03166369efdfc08360016101d2610301565b6036546101dd610418565b6035546039546040518863ffffffff1660e01b815260040180886001600160a01b031681526020018715158152602001866001600160a01b03168152602001858152602001848152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b5050603a80546001810182556000919091527fa2999d817b6757290b50e8ecf3fa939673403dd35c97de392fdb343b4015ce9e0180546001600160a01b0385166001600160a01b0319909116811790915560408051918252517f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e9350908190036020019150a15050565b603a5490565b60355481565b6033546001600160a01b031690565b6038546001600160a01b031681565b60365481565b60375481565b6000610338603754610445565b6001600160a01b0316336001600160a01b03161461039d576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b603a54600111156103b0576103b061014b565b603a80546000919060001981019081106103c657fe5b600091825260209091200154603a80546001600160a01b03909216925090806103eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60395481565b60345490565b603a818154811061042b57fe5b6000918252602090912001546001600160a01b0316905081565b6033546000906001600160a01b03166104a5576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156104f157600080fd5b505afa158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d602081101561059057600080fd5b505192915050565b610342806105a68339019056fe60806040526040516103423803806103428339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610223565b6101be8161021d60201b61009a1760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610307603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b151590565b60d6806102316000396000f3fe6080604052366044576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b6050604c6052565b6077565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156095573d6000f35b3d6000fd5b3b15159056fea26469706673582212208ed6ffa1ceda73e7f2255c282c025b00bc31cb41fe1328bb37a62d3c6f61c36564736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220010927c745faf736853b28f4fd21791a7cc7f7ff9b177199a87aaaea816e07cd64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletCacheBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306035557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966036557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386037553480156100c157600080fd5b50604051610c4e380380610c4e833981810160405260e08110156100e457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919061011a86610173565b61012384610241565b603880546001600160a01b0319166001600160a01b0389161790556039859055821561014f5760358390555b811561015b5760368290555b80156101675760378190555b505050505050506102f4565b600054610100900460ff168061018c575061018c6102ee565b8061019a575060005460ff16155b6101d55760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff16158015610200576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561022b57603380546001600160a01b0319166001600160a01b0384161790555b801561023d576000805461ff00191690555b5050565b600054610100900460ff168061025a575061025a6102ee565b80610268575060005460ff16155b6102a35760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff161580156102ce576000805460ff1961ff0019909116610100171660011790555b811561022b576034829055801561023d576000805461ff00191690555050565b303b1590565b61091d806103036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063877337b011610071578063877337b01461010657806387e8bed11461010e578063a4570e5114610116578063c76b08881461011e578063e2b4ce9714610126578063fc6cabe71461012e576100a9565b806360dbc5de146100ae57806371b9076a146100b8578063747c31d6146100d25780637d73b231146100da5780638117abc1146100fe575b600080fd5b6100b661014b565b005b6100c06102f5565b60408051918252519081900360200190f35b6100c06102fb565b6100e2610301565b604080516001600160a01b039092168252519081900360200190f35b6100e2610310565b6100c061031f565b6100c0610325565b6100e261032b565b6100c0610412565b6100c0610418565b6100e26004803603602081101561014457600080fd5b503561041e565b6000610158603754610445565b6038546040519192506000916001600160a01b039091169061017990610598565b6001600160a01b03909116815260406020820181905260008183018190529051918290036080019190f0801580156101b5573d6000803e3d6000fd5b509050806001600160a01b03166369efdfc08360016101d2610301565b6036546101dd610418565b6035546039546040518863ffffffff1660e01b815260040180886001600160a01b031681526020018715158152602001866001600160a01b03168152602001858152602001848152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b5050603a80546001810182556000919091527fa2999d817b6757290b50e8ecf3fa939673403dd35c97de392fdb343b4015ce9e0180546001600160a01b0385166001600160a01b0319909116811790915560408051918252517f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e9350908190036020019150a15050565b603a5490565b60355481565b6033546001600160a01b031690565b6038546001600160a01b031681565b60365481565b60375481565b6000610338603754610445565b6001600160a01b0316336001600160a01b03161461039d576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b603a54600111156103b0576103b061014b565b603a80546000919060001981019081106103c657fe5b600091825260209091200154603a80546001600160a01b03909216925090806103eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60395481565b60345490565b603a818154811061042b57fe5b6000918252602090912001546001600160a01b0316905081565b6033546000906001600160a01b03166104a5576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156104f157600080fd5b505afa158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d602081101561059057600080fd5b505192915050565b610342806105a68339019056fe60806040526040516103423803806103428339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610223565b6101be8161021d60201b61009a1760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610307603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b151590565b60d6806102316000396000f3fe6080604052366044576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b6050604c6052565b6077565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156095573d6000f35b3d6000fd5b3b15159056fea26469706673582212208ed6ffa1ceda73e7f2255c282c025b00bc31cb41fe1328bb37a62d3c6f61c36564736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220b9bcd9bc21ac048c7e2ea19d96e37dbf82e1ac9e74d2f3a6005c7c3f6a76b70d64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletCache deploys a new Ethereum contract, binding an instance of WalletCache to it. func DeployWalletCache(auth *bind.TransactOpts, backend bind.ContractBackend, _walletImplementation_ common.Address, _ens_ common.Address, _defaultDailyLimit_ *big.Int, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _tokenWhitelistNode_ [32]byte, _walletDeployerNode_ [32]byte) (common.Address, *types.Transaction, *WalletCache, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index e7771d75..fb9da3a5 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b5060405162000c4838038062000c488339818101604052606081101561009e57600080fd5b50805160208201516040909201519091906100b8836100d5565b6100c1826101a4565b80156100cd5760358190555b505050610258565b600054610100900460ff16806100ee57506100ee610252565b806100fc575060005460ff16155b6101385760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610163576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018e57603380546001600160a01b0319166001600160a01b0384161790555b80156101a0576000805461ff00191690555b5050565b600054610100900460ff16806101bd57506101bd610252565b806101cb575060005460ff16155b6102075760405162461bcd60e51b815260040180806020018281038252602e81526020018062000c1a602e913960400191505060405180910390fd5b600054610100900460ff16158015610232576000805460ff1961ff0019909116610100171660011790555b811561018e57603482905580156101a0576000805461ff00191690555050565b303b1590565b6109b280620002686000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105db565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105ea565b34801561016c57600080fd5b50610175610605565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b031661060b565b3480156101c657600080fd5b506101756107a9565b6101d8336107af565b610229576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b0387811660009081526036602052604090205416156102805760405162461bcd60e51b815260040180806020018281038252602181526020018061095c6021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c357600080fd5b505afa1580156102d7573d6000803e3d6000fd5b505050506040513d60208110156102ed57600080fd5b50516001600160a01b03161461033b576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b600061034860355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561038257600080fd5b505af1158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049657806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050505b841561052a57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561051157600080fd5b505af1158015610525573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057957600080fd5b505af115801561058d573d6000803e3d6000fd5b5050505060003411156105d1576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105cf573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b610614336107af565b610665576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b600061067260355461083a565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106ac57600080fd5b505af11580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078d57600080fd5b505af11580156107a1573d6000803e3d6000fd5b505050505050565b60345490565b60006107bc60345461083a565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b505192915050565b6033546000906001600160a01b031661089a576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d602081101561091057600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561080857600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220a2906ac3c49284cf6c00c1f8014911dbbbca686e0f3ae5940f959591e87f175864736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a264697066735822122022c9365b7a18bb94c987a4c7a9d21133e8db6cc949894cefce3d9a0e7e9a9ab364736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { From bd091a747ac95916c3be44a22a56a671a2dafde0 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:43:11 +0100 Subject: [PATCH 44/66] run prettier --- contracts/wallet.sol | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 85a861b8..a8bf6df7 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -59,10 +59,10 @@ contract OptOutableMonolith2FA is Controllable, Ownable { _; } - /// @dev Check if the sender is the Owner or 2FA - modifier onlyOwnerOr2FA() { - require (_isOwner(msg.sender) || _is2FA(msg.sender), "only owner or 2FA"); - _; + /// @dev Check if the sender is the Owner or 2FA + modifier onlyOwnerOr2FA() { + require(_isOwner(msg.sender) || _is2FA(msg.sender), "only owner or 2FA"); + _; } /// @dev set Monolith to be the 2FA @@ -82,13 +82,13 @@ contract OptOutableMonolith2FA is Controllable, Ownable { emit SetPersonal2FA(msg.sender, _p2FA); } - /// @dev utiliy function to check whether or not an address is valid 2FA'er - function _is2FA(address _sender) private view returns (bool) { - if (monolith2FA) { - return _isController(_sender); - } else { - return (_sender == personal2FA); - } + /// @dev utiliy function to check whether or not an address is valid 2FA'er + function _is2FA(address _sender) private view returns (bool) { + if (monolith2FA) { + return _isController(_sender); + } else { + return (_sender == personal2FA); + } } } @@ -98,13 +98,13 @@ contract OptOutableMonolith2FA is Controllable, Ownable { contract SelfCallableOwnable is Ownable { /// @dev Check if the sender is the Owner or self modifier onlySelf() { - require (msg.sender == address(this), "not self"); + require(msg.sender == address(this), "not self"); _; } /// @dev Check if the sender is the Owner or self modifier onlyOwnerOrSelf() { - require (_isOwner(msg.sender) || msg.sender == address(this), "Not owner or self"); + require(_isOwner(msg.sender) || msg.sender == address(this), "Not owner or self"); _; } } @@ -294,7 +294,7 @@ contract AddressWhitelist is OptOutableMonolith2FA, SelfCallableOwnable { } /// @title DailyLimit provides daily limit functionality -contract DailyLimit is OptOutableMonolith2FA, SelfCallableOwnable, TokenWhitelistable { +contract DailyLimit is OptOutableMonolith2FA, SelfCallableOwnable, TokenWhitelistable { using SafeMath for uint256; event InitializedDailyLimit(uint256 _amount, uint256 _nextReset); From 4b67c01d274383e5bb444686c7cb4d26eef2b500 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 25 Nov 2020 18:52:32 +0100 Subject: [PATCH 45/66] update pkg/bindings --- pkg/bindings/mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/wallet.go | 2 +- pkg/bindings/walletDeployer.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index 16d8f53e..3133cb26 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea26469706673582212200e7ee3634b67c1b1fdca30697e24a5583e677116139556ff7ac4c8217e94d26c64736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea26469706673582212203cd1dda1af2e0ef40f2260cc78efeed7f655143cb598318bdb5efb763745c59b64736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index 39a760d6..e50d5eb2 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"SetMonolith2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"SetPersonal2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"monolith2FA\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"personal2FA\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setMonolith2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"setPersonal2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b506158f5806200008a6000396000f3fe6080604052600436106102885760003560e01c8063747c31d61161015a578063cbd2ac68116100c1578063de212bf31161007a578063de212bf314610d77578063e2b4ce9714610d8c578063e61c51ca14610da1578063f36febda14610dcb578063f421764814610e04578063f8b2cb4f14610e7f57610288565b8063cbd2ac6814610c21578063cccdc55614610c4b578063cd7958dd14610c60578063ce0b5bd514610d0e578063cf0a866b14610d38578063d251fefc14610d4d57610288565b806390e690c71161011357806390e690c714610ab3578063aaf1fc6214610ac8578063ad95580b14610b79578063b242e53414610b8e578063be40ba7914610bc9578063beabacc814610bde57610288565b8063747c31d6146109b15780637b580e75146109c65780637d73b231146109f95780637fd004fa14610a0e578063877337b014610a895780638da5cb5b14610a9e57610288565b80633f579f42116101fe5780634d9aa248116101b75780634d9aa2481461085d5780635adc02ab146108725780636137d6701461089c57806369efdfc0146109175780636c37a7e614610972578063715018a61461099c57610288565b80633f579f4214610640578063458d07f21461070657806345b12efc1461073057806346efe0ed1461074557806347b55a9d1461081757806347d125af1461082c57610288565b80632121dc75116102505780632121dc751461052b57806326d05ab214610540578063294f40251461055557806332531c3c146105ba5780633a43199f146105ed5780633b8252fa1461061957610288565b806301ffc9a71461028d578063100f23fd146102d55780631127b57e146103015780631626ba7e1461038b57806320c13b0b14610460575b600080fd5b34801561029957600080fd5b506102c1600480360360208110156102b057600080fd5b50356001600160e01b031916610eb2565b604080519115158252519081900360200190f35b3480156102e157600080fd5b506102ff600480360360208110156102f857600080fd5b5035610ecc565b005b34801561030d57600080fd5b5061031661106c565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610350578181015183820152602001610338565b50505050905090810190601f16801561037d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039757600080fd5b50610443600480360360408110156103ae57600080fd5b81359190810190604081016020820135600160201b8111156103cf57600080fd5b8201836020820111156103e157600080fd5b803590602001918460018302840111600160201b8311171561040257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061108d945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561046c57600080fd5b506104436004803603604081101561048357600080fd5b810190602081018135600160201b81111561049d57600080fd5b8201836020820111156104af57600080fd5b803590602001918460018302840111600160201b831117156104d057600080fd5b919390929091602081019035600160201b8111156104ed57600080fd5b8201836020820111156104ff57600080fd5b803590602001918460018302840111600160201b8311171561052057600080fd5b5090925090506110fc565b34801561053757600080fd5b506102c16111d3565b34801561054c57600080fd5b506102c16111e4565b34801561056157600080fd5b5061056a6111ed565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105a657818101518382015260200161058e565b505050509050019250505060405180910390f35b3480156105c657600080fd5b506102c1600480360360208110156105dd57600080fd5b50356001600160a01b031661124f565b6102ff6004803603604081101561060357600080fd5b506001600160a01b038135169060200135611264565b34801561062557600080fd5b5061062e611483565b60408051918252519081900360200190f35b34801561064c57600080fd5b506103166004803603606081101561066357600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561069257600080fd5b8201836020820111156106a457600080fd5b803590602001918460018302840111600160201b831117156106c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611489945050505050565b34801561071257600080fd5b506102ff6004803603602081101561072957600080fd5b503561196a565b34801561073c57600080fd5b5061062e611a51565b34801561075157600080fd5b506102ff6004803603606081101561076857600080fd5b81359190810190604081016020820135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b919390929091602081019035600160201b8111156107d957600080fd5b8201836020820111156107eb57600080fd5b803590602001918460018302840111600160201b8311171561080c57600080fd5b509092509050611a6f565b34801561082357600080fd5b5061056a611e14565b34801561083857600080fd5b50610841611e74565b604080516001600160a01b039092168252519081900360200190f35b34801561086957600080fd5b5061062e611e83565b34801561087e57600080fd5b506102ff6004803603602081101561089557600080fd5b5035611e89565b3480156108a857600080fd5b506102ff600480360360208110156108bf57600080fd5b810190602081018135600160201b8111156108d957600080fd5b8201836020820111156108eb57600080fd5b803590602001918460208302840111600160201b8311171561090c57600080fd5b5090925090506121bd565b34801561092357600080fd5b506102ff600480360360e081101561093a57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356123e4565b34801561097e57600080fd5b506102ff6004803603602081101561099557600080fd5b50356124c0565b3480156109a857600080fd5b506102ff612641565b3480156109bd57600080fd5b5061062e61273c565b3480156109d257600080fd5b506102ff600480360360208110156109e957600080fd5b50356001600160a01b0316612742565b348015610a0557600080fd5b5061084161290d565b348015610a1a57600080fd5b506102ff60048036036020811015610a3157600080fd5b810190602081018135600160201b811115610a4b57600080fd5b820183602082011115610a5d57600080fd5b803590602001918460208302840111600160201b83111715610a7e57600080fd5b50909250905061291c565b348015610a9557600080fd5b5061062e612c5f565b348015610aaa57600080fd5b50610841612c65565b348015610abf57600080fd5b506102ff612c74565b348015610ad457600080fd5b506102ff60048036036020811015610aeb57600080fd5b810190602081018135600160201b811115610b0557600080fd5b820183602082011115610b1757600080fd5b803590602001918460018302840111600160201b83111715610b3857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612cce945050505050565b348015610b8557600080fd5b506102ff612df0565b348015610b9a57600080fd5b506102ff60048036036040811015610bb157600080fd5b506001600160a01b0381351690602001351515612ef7565b348015610bd557600080fd5b506102c16130ae565b348015610bea57600080fd5b506102ff60048036036060811015610c0157600080fd5b506001600160a01b038135811691602081013590911690604001356130bd565b348015610c2d57600080fd5b506102ff60048036036020811015610c4457600080fd5b5035613231565b348015610c5757600080fd5b5061062e613625565b348015610c6c57600080fd5b5061062e60048036036020811015610c8357600080fd5b810190602081018135600160201b811115610c9d57600080fd5b820183602082011115610caf57600080fd5b803590602001918460208302840111600160201b83111715610cd057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061362b945050505050565b348015610d1a57600080fd5b506102ff60048036036020811015610d3157600080fd5b5035613685565b348015610d4457600080fd5b506102c1613829565b348015610d5957600080fd5b5061084160048036036020811015610d7057600080fd5b5035613839565b348015610d8357600080fd5b506102c1613860565b348015610d9857600080fd5b5061062e61386e565b348015610dad57600080fd5b506102ff60048036036020811015610dc457600080fd5b5035613874565b348015610dd757600080fd5b5061062e60048036036040811015610dee57600080fd5b506001600160a01b0381351690602001356139fe565b348015610e1057600080fd5b506102ff60048036036020811015610e2757600080fd5b810190602081018135600160201b811115610e4157600080fd5b820183602082011115610e5357600080fd5b803590602001918460208302840111600160201b83111715610e7457600080fd5b509092509050613b75565b348015610e8b57600080fd5b5061062e60048036036020811015610ea257600080fd5b50356001600160a01b0316613ec8565b6001600160e01b031981166301ffc9a760e01b145b919050565b610ed533613ed3565b80610ee45750610ee433613ee7565b610f29576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16610f78576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610fdb6039805480602002602001604051908101604052809291908181526020018280548015610fd157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fb3575b505050505061362b565b81146110185760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b61102460396000615608565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b60008061109a8484613f23565b90506110a581613ed3565b6110ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611173945086935089915088908190840183828082843760009201919091525061108d92505050565b6001600160e01b031916146111bf576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561124557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611227575b5050505050905090565b60376020526000908152604090205460ff1681565b61126d33613ed3565b8061127757503330145b6112bc576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6112c58261410e565b61130b576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061131783836139fe565b905061132281614128565b600061132f6042546141c4565b90506001600160a01b038416156113c8576113546001600160a01b0385168285614317565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b50505050611439565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b606061149433613ed3565b8061149e57503330145b6114e3576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff1661151d5760006115106000856139fe565b905061151b81614128565b505b61152f846001600160a01b031661442f565b801561153f575061153f84614435565b1561170f57600080611551868561444f565b6001600160a01b038216600090815260376020526040902054919350915060ff1661158f57600061158287836139fe565b905061158d81614128565b505b6115a26001600160a01b03871685614550565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f815181106115d557fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561166757818101518382015260200161164f565b50505050905090810190601f1680156116945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156116c75781810151838201526020016116af565b50505050905090810190601f1680156116f45780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611963915050565b60006060856001600160a01b031685856040518082805190602001908083835b6020831061174e5780518252601f19909201916020918201910161172f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146117b0576040519150601f19603f3d011682016040523d82523d6000602084013e6117b5565b606091505b50915091508181906118455760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561180a5781810151838201526020016117f2565b50505050905090810190601f1680156118375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156118c15781810151838201526020016118a9565b50505050905090810190601f1680156118ee5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611921578181015183820152602001611909565b50505050905090810190601f16801561194e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b61197333613ed3565b8061197d57503330145b6119c2576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611a1a57603e54811015611a0c57603e81905560408054815183815260208101919091528151600080516020615764833981519152929181900390910190a15b611a1581614601565b611a4e565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611a665750603d546111e1565b50603e546111e1565b603554600160a81b900460ff1615611adb57611a8a33614644565b611ad6576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b611b24565b6036546001600160a01b03163314611b245760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b60004690506000611b9b823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061469d565b9050631626ba7e60e01b6001600160e01b031916611bef8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061108d92505050565b6001600160e01b03191614611c3b576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6041548714611c7d576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611c856146ee565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611ce5576040519150601f19603f3d011682016040523d82523d6000602084013e611cea565b606091505b5091509150818190611d3d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611dcc578181015183820152602001611db4565b50505050905090810190601f168015611df95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611245576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611227575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160a81b900460ff1615611ef557611ea433614644565b611ef0576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b611f3e565b6036546001600160a01b03163314611f3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b603b5460ff16611f8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611fee6039805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b811461202b5760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b60005b60395481101561211257603760006039838154811061204957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1661210a576001603760006039848154811061208857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556039805460389190839081106120ce57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b60010161202e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561219557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612177575b5050935050505060405180910390a16121b060396000615608565b50603b805460ff19169055565b6121c633613ed3565b806121d057503330145b612215576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156122305750603b54610100900460ff16155b612281576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166122da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061231e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61232a603a8383615626565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926123999285918591829185019084908082843760009201919091525061362b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806123fd57506123fd614736565b8061240b575060005460ff16155b6124465760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015612471576000805460ff1961ff0019909116610100171660011790555b61247961473c565b612482866147f0565b61248b846148be565b612495888861496b565b61249f8286614aca565b604283905580156124b6576000805461ff00191690555b5050505050505050565b603554600160a81b900460ff161561252c576124db33614644565b612527576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b612575565b6036546001600160a01b031633146125755760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b80603f54146125b55760405162461bcd60e51b81526004018080602001828103825260258152602001806157f56025913960400191505060405180910390fd5b603d5481116125f55760405162461bcd60e51b81526004018080602001828103825260288152602001806156be6028913960400191505060405180910390fd5b603e8190556126074262015180614c2c565b6040818155603e548151908152602081019290925280516000805160206157648339815191529281900390910190a1611a4e603f54614601565b61264a33613ed3565b612691576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166126ef576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61274b33613ed3565b612792576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6001600160a01b0381166127ed576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612846576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b0381163014156128a4576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60a81b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61292533613ed3565b8061292f57503330145b612974576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff1615801561298f5750603b54610100900460ff16155b6129e0576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612afc57612a39828281518110612a2c57fe5b6020026020010151613ed3565b15612a84576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612a9b57fe5b60200260200101516001600160a01b03161415612af4576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612a14565b50603b5462010000900460ff16612b56576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612b9a576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ba660398484615626565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612c139285918591829185019084908082843760009201919091525061362b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612c7d33613ed3565b612cc4576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612ccc6146ee565b565b612cd733613ed3565b80612ce157503330145b612d26576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156124b657612d49866054614c86565b888601805160148201516034909201805193995060609190911c96509094509092509050612d826054612d7c8785614c2c565b90614c2c565b945086851115612dc9576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612ddf57506040805160208101909152600081525b612dea848483611489565b50612d36565b612df933613ed3565b612e40576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a81b900460ff1615612e9f576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60a81b1916600160a81b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612f0033613ed3565b612f47576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612fa5576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612fea5760405162461bcd60e51b815260040180806020018281038252602381526020018061581a6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061304357604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b6130c633613ed3565b806130d057503330145b613115576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080613152576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b03841661319d576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff166131d65760006131c984846139fe565b90506131d481614128565b505b6131e1848484614cc8565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160a81b900460ff161561329d5761324c33614644565b613298576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6132e6565b6036546001600160a01b031633146132e65760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b603b54610100900460ff1661333a576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61339b603a805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b81146133d85760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b60005b603a548110156135795760376000603a83815481106133f657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561357157600060376000603a848154811061343657fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b60385461347a906001614c86565b81101561354257603a828154811061348e57fe5b600091825260209091200154603880546001600160a01b0390921691839081106134b457fe5b6000918252602090912001546001600160a01b0316141561353a576038805460001981019081106134e157fe5b600091825260209091200154603880546001600160a01b03909216918390811061350757fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613542565b60010161346c565b50603880548061354e57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b6001016133db565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156135fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116135de575b5050935050505060405180910390a1613617603a6000615608565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b8381101561365e578181015183820152602001613646565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61368e33613ed3565b8061369d575061369d33613ee7565b6136e2576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff16613736576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613797603a805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b81146137d45760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b6137e0603a6000615608565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b6038818154811061384657fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b80806138b1576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6138ba33613ed3565b806138c957506138c933613ee7565b61390e576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b81471161395b576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61396482614128565b61396c612c65565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156139a4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336139cf612c65565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613a08614d02565b6001600160a01b0316836001600160a01b03161415613a285750806110f6565b816001600160a01b03841615613ab7576000806000613a4687614d78565b5050509350935093505080613a625760009450505050506110f6565b81613a9d576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613ab183613aab8885614f01565b90614f5a565b93505050505b6000806000613ac4614f9c565b5050509350935093505080613b16576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613b5c576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613b6a82613aab8686614f01565b979650505050505050565b613b7e33613ed3565b80613b8857503330145b613bcd576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613cdc57613c19828281518110612a2c57fe5b15613c64576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613c7b57fe5b60200260200101516001600160a01b03161415613cd4576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613c01565b50603b5462010000900460ff1615613d33576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613e245760376000858584818110613d4e57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613e1c57600160376000868685818110613d8a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613ddf57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613d36565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613eb457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e96575b5050935050505060405180910390a1505050565b60006110f68261510b565b6035546001600160a01b0390811691161490565b603554600090600160a81b900460ff1615613f0c57613f0582614644565b9050610ec7565b506036546001600160a01b03828116911614610ec7565b60008151604114613f7b576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613fec5760405162461bcd60e51b81526004018080602001828103825260228152602001806157426022913960400191505060405180910390fd5b8060ff16601b1415801561400457508060ff16601c14155b156140405760405162461bcd60e51b81526004018080602001828103825260228152602001806157846022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561409c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614104576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b60008061411a83614d78565b509098975050505050505050565b61413061519c565b80603e541015614187576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e546141949082614c86565b603e819055604080548151928352602083015280516000805160206157648339815191529281900390910190a150565b6033546000906001600160a01b0316614224576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561427057600080fd5b505afa158015614284573d6000803e3d6000fd5b505050506040513d602081101561429a57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156142e557600080fd5b505afa1580156142f9573d6000803e3d6000fd5b505050506040513d602081101561430f57600080fd5b505192915050565b80158061439d575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561436f57600080fd5b505afa158015614383573d6000803e3d6000fd5b505050506040513d602081101561439957600080fd5b5051155b6143d85760405162461bcd60e51b815260040180806020018281038252603681526020018061588a6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261442a908490614550565b505050565b3b151590565b60008061444183614d78565b509198975050505050505050565b60008061445d603c546141c4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156144c85781810151838201526020016144b0565b50505050905090810190601f1680156144f55780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561451257600080fd5b505afa158015614526573d6000803e3d6000fd5b505050506040513d604081101561453c57600080fd5b508051602090910151909590945092505050565b60606145a5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166151e99092919063ffffffff16565b80519091501561442a578080602001905160208110156145c457600080fd5b505161442a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061583d602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b60006146516034546141c4565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156142e557600080fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b303b1590565b600054610100900460ff16806147555750614755614736565b80614763575060005460ff16155b61479e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff161580156147c9576000805460ff1961ff0019909116610100171660011790555b6035805460ff60a81b1916600160a81b1790558015611a4e576000805461ff001916905550565b600054610100900460ff16806148095750614809614736565b80614817575060005460ff16155b6148525760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff1615801561487d576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156148a857603380546001600160a01b0319166001600160a01b0384161790555b80156148ba576000805461ff00191690555b5050565b600054610100900460ff16806148d757506148d7614736565b806148e5575060005460ff16155b6149205760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff1615801561494b576000805460ff1961ff0019909116610100171660011790555b81156148a857603482905580156148ba576000805461ff00191690555050565b600054610100900460ff16806149845750614984614736565b80614992575060005460ff16155b6149cd5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff161580156149f8576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614a7057604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1801561442a576000805461ff0019169055505050565b600054610100900460ff1680614ae35750614ae3614736565b80614af1575060005460ff16155b614b2c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015614b57576000805460ff1961ff0019909116610100171660011790555b614b60826151f8565b6000614b6a614f9c565b505050505091505060008111614bb7576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614bd64262015180614c2c565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a15050801561442a576000805461ff0019169055505050565b600082820183811015611963576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061196383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506152a5565b6001600160a01b038216614cee57614ce96001600160a01b038416826152ff565b61442a565b61442a6001600160a01b03831684836153e4565b6000614d0f603c546141c4565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614d4757600080fd5b505afa158015614d5b573d6000803e3d6000fd5b505050506040513d6020811015614d7157600080fd5b5051905090565b6060600080600080600080614d8e603c546141c4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614dda57600080fd5b505afa158015614dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614e1757600080fd5b8101908080516040519392919084600160201b821115614e3657600080fd5b908301906020820185811115614e4b57600080fd5b8251600160201b811182820188101715614e6457600080fd5b82525081516020918201929091019080838360005b83811015614e91578181015183820152602001614e79565b50505050905090810190601f168015614ebe5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614f10575060006110f6565b82820282848281614f1d57fe5b04146119635760405162461bcd60e51b81526004018080602001828103825260218152602001806157a66021913960400191505060405180910390fd5b600061196383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615436565b6060600080600080600080614fb2603c546141c4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614fea57600080fd5b505afa158015614ffe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561502757600080fd5b8101908080516040519392919084600160201b82111561504657600080fd5b90830190602082018581111561505b57600080fd5b8251600160201b81118282018810171561507457600080fd5b82525081516020918201929091019080838360005b838110156150a1578181015183820152602001615089565b50505050905090810190601f1680156150ce5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561519557604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561516257600080fd5b505afa158015615176573d6000803e3d6000fd5b505050506040513d602081101561518c57600080fd5b50519050610ec7565b5047610ec7565b604054421115612ccc576151b34262015180614c2c565b6040818155603d54603e8190558151908152602081019290925280516000805160206157648339815191529281900390910190a1565b60606111cb848460008561549b565b600054610100900460ff16806152115750615211614736565b8061521f575060005460ff16155b61525a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015615285576000805460ff1961ff0019909116610100171660011790555b81156148a857603c82905580156148ba576000805461ff00191690555050565b600081848411156152f75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b505050900390565b80471015615354576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d806000811461539f576040519150601f19603f3d011682016040523d82523d6000602084013e6153a4565b606091505b505090508061442a5760405162461bcd60e51b815260040180806020018281038252603a815260200180615708603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261442a908490614550565b600081836154855760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b50600083858161549157fe5b0495945050505050565b60606154a68561442f565b6154f7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106155365780518252601f199092019160209182019101615517565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615598576040519150601f19603f3d011682016040523d82523d6000602084013e61559d565b606091505b509150915081156155b15791506111cb9050565b8051156155c15780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561180a5781810151838201526020016117f2565b5080546000825590600052602060002090810190611a4e9190615689565b828054828255906000526020600020908101928215615679579160200282015b828111156156795781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615646565b5061568592915061569e565b5090565b5b80821115615685576000815560010161568a565b5b808211156156855780546001600160a01b031916815560010161569f56fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212201bc91f3d02ca0b5a306e627538f75ed2545c15bb103332d0a58674649fd0850964736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b506158f5806200008a6000396000f3fe6080604052600436106102885760003560e01c8063747c31d61161015a578063cbd2ac68116100c1578063de212bf31161007a578063de212bf314610d77578063e2b4ce9714610d8c578063e61c51ca14610da1578063f36febda14610dcb578063f421764814610e04578063f8b2cb4f14610e7f57610288565b8063cbd2ac6814610c21578063cccdc55614610c4b578063cd7958dd14610c60578063ce0b5bd514610d0e578063cf0a866b14610d38578063d251fefc14610d4d57610288565b806390e690c71161011357806390e690c714610ab3578063aaf1fc6214610ac8578063ad95580b14610b79578063b242e53414610b8e578063be40ba7914610bc9578063beabacc814610bde57610288565b8063747c31d6146109b15780637b580e75146109c65780637d73b231146109f95780637fd004fa14610a0e578063877337b014610a895780638da5cb5b14610a9e57610288565b80633f579f42116101fe5780634d9aa248116101b75780634d9aa2481461085d5780635adc02ab146108725780636137d6701461089c57806369efdfc0146109175780636c37a7e614610972578063715018a61461099c57610288565b80633f579f4214610640578063458d07f21461070657806345b12efc1461073057806346efe0ed1461074557806347b55a9d1461081757806347d125af1461082c57610288565b80632121dc75116102505780632121dc751461052b57806326d05ab214610540578063294f40251461055557806332531c3c146105ba5780633a43199f146105ed5780633b8252fa1461061957610288565b806301ffc9a71461028d578063100f23fd146102d55780631127b57e146103015780631626ba7e1461038b57806320c13b0b14610460575b600080fd5b34801561029957600080fd5b506102c1600480360360208110156102b057600080fd5b50356001600160e01b031916610eb2565b604080519115158252519081900360200190f35b3480156102e157600080fd5b506102ff600480360360208110156102f857600080fd5b5035610ecc565b005b34801561030d57600080fd5b5061031661106c565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610350578181015183820152602001610338565b50505050905090810190601f16801561037d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039757600080fd5b50610443600480360360408110156103ae57600080fd5b81359190810190604081016020820135600160201b8111156103cf57600080fd5b8201836020820111156103e157600080fd5b803590602001918460018302840111600160201b8311171561040257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061108d945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561046c57600080fd5b506104436004803603604081101561048357600080fd5b810190602081018135600160201b81111561049d57600080fd5b8201836020820111156104af57600080fd5b803590602001918460018302840111600160201b831117156104d057600080fd5b919390929091602081019035600160201b8111156104ed57600080fd5b8201836020820111156104ff57600080fd5b803590602001918460018302840111600160201b8311171561052057600080fd5b5090925090506110fc565b34801561053757600080fd5b506102c16111d3565b34801561054c57600080fd5b506102c16111e4565b34801561056157600080fd5b5061056a6111ed565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105a657818101518382015260200161058e565b505050509050019250505060405180910390f35b3480156105c657600080fd5b506102c1600480360360208110156105dd57600080fd5b50356001600160a01b031661124f565b6102ff6004803603604081101561060357600080fd5b506001600160a01b038135169060200135611264565b34801561062557600080fd5b5061062e611483565b60408051918252519081900360200190f35b34801561064c57600080fd5b506103166004803603606081101561066357600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561069257600080fd5b8201836020820111156106a457600080fd5b803590602001918460018302840111600160201b831117156106c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611489945050505050565b34801561071257600080fd5b506102ff6004803603602081101561072957600080fd5b503561196a565b34801561073c57600080fd5b5061062e611a51565b34801561075157600080fd5b506102ff6004803603606081101561076857600080fd5b81359190810190604081016020820135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b919390929091602081019035600160201b8111156107d957600080fd5b8201836020820111156107eb57600080fd5b803590602001918460018302840111600160201b8311171561080c57600080fd5b509092509050611a6f565b34801561082357600080fd5b5061056a611e14565b34801561083857600080fd5b50610841611e74565b604080516001600160a01b039092168252519081900360200190f35b34801561086957600080fd5b5061062e611e83565b34801561087e57600080fd5b506102ff6004803603602081101561089557600080fd5b5035611e89565b3480156108a857600080fd5b506102ff600480360360208110156108bf57600080fd5b810190602081018135600160201b8111156108d957600080fd5b8201836020820111156108eb57600080fd5b803590602001918460208302840111600160201b8311171561090c57600080fd5b5090925090506121bd565b34801561092357600080fd5b506102ff600480360360e081101561093a57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356123e4565b34801561097e57600080fd5b506102ff6004803603602081101561099557600080fd5b50356124c0565b3480156109a857600080fd5b506102ff612641565b3480156109bd57600080fd5b5061062e61273c565b3480156109d257600080fd5b506102ff600480360360208110156109e957600080fd5b50356001600160a01b0316612742565b348015610a0557600080fd5b5061084161290d565b348015610a1a57600080fd5b506102ff60048036036020811015610a3157600080fd5b810190602081018135600160201b811115610a4b57600080fd5b820183602082011115610a5d57600080fd5b803590602001918460208302840111600160201b83111715610a7e57600080fd5b50909250905061291c565b348015610a9557600080fd5b5061062e612c5f565b348015610aaa57600080fd5b50610841612c65565b348015610abf57600080fd5b506102ff612c74565b348015610ad457600080fd5b506102ff60048036036020811015610aeb57600080fd5b810190602081018135600160201b811115610b0557600080fd5b820183602082011115610b1757600080fd5b803590602001918460018302840111600160201b83111715610b3857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612cce945050505050565b348015610b8557600080fd5b506102ff612df0565b348015610b9a57600080fd5b506102ff60048036036040811015610bb157600080fd5b506001600160a01b0381351690602001351515612ef7565b348015610bd557600080fd5b506102c16130ae565b348015610bea57600080fd5b506102ff60048036036060811015610c0157600080fd5b506001600160a01b038135811691602081013590911690604001356130bd565b348015610c2d57600080fd5b506102ff60048036036020811015610c4457600080fd5b5035613231565b348015610c5757600080fd5b5061062e613625565b348015610c6c57600080fd5b5061062e60048036036020811015610c8357600080fd5b810190602081018135600160201b811115610c9d57600080fd5b820183602082011115610caf57600080fd5b803590602001918460208302840111600160201b83111715610cd057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061362b945050505050565b348015610d1a57600080fd5b506102ff60048036036020811015610d3157600080fd5b5035613685565b348015610d4457600080fd5b506102c1613829565b348015610d5957600080fd5b5061084160048036036020811015610d7057600080fd5b5035613839565b348015610d8357600080fd5b506102c1613860565b348015610d9857600080fd5b5061062e61386e565b348015610dad57600080fd5b506102ff60048036036020811015610dc457600080fd5b5035613874565b348015610dd757600080fd5b5061062e60048036036040811015610dee57600080fd5b506001600160a01b0381351690602001356139fe565b348015610e1057600080fd5b506102ff60048036036020811015610e2757600080fd5b810190602081018135600160201b811115610e4157600080fd5b820183602082011115610e5357600080fd5b803590602001918460208302840111600160201b83111715610e7457600080fd5b509092509050613b75565b348015610e8b57600080fd5b5061062e60048036036020811015610ea257600080fd5b50356001600160a01b0316613ec8565b6001600160e01b031981166301ffc9a760e01b145b919050565b610ed533613ed3565b80610ee45750610ee433613ee7565b610f29576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16610f78576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610fdb6039805480602002602001604051908101604052809291908181526020018280548015610fd157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fb3575b505050505061362b565b81146110185760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b61102460396000615608565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b60008061109a8484613f23565b90506110a581613ed3565b6110ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611173945086935089915088908190840183828082843760009201919091525061108d92505050565b6001600160e01b031916146111bf576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561124557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611227575b5050505050905090565b60376020526000908152604090205460ff1681565b61126d33613ed3565b8061127757503330145b6112bc576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6112c58261410e565b61130b576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061131783836139fe565b905061132281614128565b600061132f6042546141c4565b90506001600160a01b038416156113c8576113546001600160a01b0385168285614317565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b50505050611439565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b606061149433613ed3565b8061149e57503330145b6114e3576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff1661151d5760006115106000856139fe565b905061151b81614128565b505b61152f846001600160a01b031661442f565b801561153f575061153f84614435565b1561170f57600080611551868561444f565b6001600160a01b038216600090815260376020526040902054919350915060ff1661158f57600061158287836139fe565b905061158d81614128565b505b6115a26001600160a01b03871685614550565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f815181106115d557fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561166757818101518382015260200161164f565b50505050905090810190601f1680156116945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156116c75781810151838201526020016116af565b50505050905090810190601f1680156116f45780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611963915050565b60006060856001600160a01b031685856040518082805190602001908083835b6020831061174e5780518252601f19909201916020918201910161172f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146117b0576040519150601f19603f3d011682016040523d82523d6000602084013e6117b5565b606091505b50915091508181906118455760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561180a5781810151838201526020016117f2565b50505050905090810190601f1680156118375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156118c15781810151838201526020016118a9565b50505050905090810190601f1680156118ee5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611921578181015183820152602001611909565b50505050905090810190601f16801561194e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b61197333613ed3565b8061197d57503330145b6119c2576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611a1a57603e54811015611a0c57603e81905560408054815183815260208101919091528151600080516020615764833981519152929181900390910190a15b611a1581614601565b611a4e565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611a665750603d546111e1565b50603e546111e1565b603554600160a81b900460ff1615611adb57611a8a33614644565b611ad6576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b611b24565b6036546001600160a01b03163314611b245760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b60004690506000611b9b823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061469d565b9050631626ba7e60e01b6001600160e01b031916611bef8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061108d92505050565b6001600160e01b03191614611c3b576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6041548714611c7d576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611c856146ee565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611ce5576040519150601f19603f3d011682016040523d82523d6000602084013e611cea565b606091505b5091509150818190611d3d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611dcc578181015183820152602001611db4565b50505050905090810190601f168015611df95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611245576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611227575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160a81b900460ff1615611ef557611ea433614644565b611ef0576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b611f3e565b6036546001600160a01b03163314611f3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b603b5460ff16611f8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611fee6039805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b811461202b5760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b60005b60395481101561211257603760006039838154811061204957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1661210a576001603760006039848154811061208857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556039805460389190839081106120ce57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b60010161202e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561219557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612177575b5050935050505060405180910390a16121b060396000615608565b50603b805460ff19169055565b6121c633613ed3565b806121d057503330145b612215576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156122305750603b54610100900460ff16155b612281576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166122da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061231e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61232a603a8383615626565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926123999285918591829185019084908082843760009201919091525061362b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806123fd57506123fd614736565b8061240b575060005460ff16155b6124465760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015612471576000805460ff1961ff0019909116610100171660011790555b61247961473c565b612482866147f0565b61248b846148be565b612495888861496b565b61249f8286614aca565b604283905580156124b6576000805461ff00191690555b5050505050505050565b603554600160a81b900460ff161561252c576124db33614644565b612527576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b612575565b6036546001600160a01b031633146125755760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b80603f54146125b55760405162461bcd60e51b81526004018080602001828103825260258152602001806157f56025913960400191505060405180910390fd5b603d5481116125f55760405162461bcd60e51b81526004018080602001828103825260288152602001806156be6028913960400191505060405180910390fd5b603e8190556126074262015180614c2c565b6040818155603e548151908152602081019290925280516000805160206157648339815191529281900390910190a1611a4e603f54614601565b61264a33613ed3565b612691576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166126ef576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61274b33613ed3565b612792576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6001600160a01b0381166127ed576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612846576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b0381163014156128a4576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60a81b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61292533613ed3565b8061292f57503330145b612974576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff1615801561298f5750603b54610100900460ff16155b6129e0576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612afc57612a39828281518110612a2c57fe5b6020026020010151613ed3565b15612a84576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612a9b57fe5b60200260200101516001600160a01b03161415612af4576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612a14565b50603b5462010000900460ff16612b56576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612b9a576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ba660398484615626565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612c139285918591829185019084908082843760009201919091525061362b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612c7d33613ed3565b612cc4576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612ccc6146ee565b565b612cd733613ed3565b80612ce157503330145b612d26576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156124b657612d49866054614c86565b888601805160148201516034909201805193995060609190911c96509094509092509050612d826054612d7c8785614c2c565b90614c2c565b945086851115612dc9576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612ddf57506040805160208101909152600081525b612dea848483611489565b50612d36565b612df933613ed3565b612e40576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a81b900460ff1615612e9f576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60a81b1916600160a81b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612f0033613ed3565b612f47576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612fa5576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612fea5760405162461bcd60e51b815260040180806020018281038252602381526020018061581a6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061304357604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b6130c633613ed3565b806130d057503330145b613115576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080613152576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b03841661319d576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff166131d65760006131c984846139fe565b90506131d481614128565b505b6131e1848484614cc8565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160a81b900460ff161561329d5761324c33614644565b613298576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6132e6565b6036546001600160a01b031633146132e65760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b603b54610100900460ff1661333a576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61339b603a805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b81146133d85760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b60005b603a548110156135795760376000603a83815481106133f657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561357157600060376000603a848154811061343657fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b60385461347a906001614c86565b81101561354257603a828154811061348e57fe5b600091825260209091200154603880546001600160a01b0390921691839081106134b457fe5b6000918252602090912001546001600160a01b0316141561353a576038805460001981019081106134e157fe5b600091825260209091200154603880546001600160a01b03909216918390811061350757fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613542565b60010161346c565b50603880548061354e57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b6001016133db565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156135fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116135de575b5050935050505060405180910390a1613617603a6000615608565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b8381101561365e578181015183820152602001613646565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61368e33613ed3565b8061369d575061369d33613ee7565b6136e2576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff16613736576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613797603a805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b81146137d45760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b6137e0603a6000615608565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b6038818154811061384657fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b80806138b1576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6138ba33613ed3565b806138c957506138c933613ee7565b61390e576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b81471161395b576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61396482614128565b61396c612c65565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156139a4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336139cf612c65565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613a08614d02565b6001600160a01b0316836001600160a01b03161415613a285750806110f6565b816001600160a01b03841615613ab7576000806000613a4687614d78565b5050509350935093505080613a625760009450505050506110f6565b81613a9d576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613ab183613aab8885614f01565b90614f5a565b93505050505b6000806000613ac4614f9c565b5050509350935093505080613b16576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613b5c576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613b6a82613aab8686614f01565b979650505050505050565b613b7e33613ed3565b80613b8857503330145b613bcd576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613cdc57613c19828281518110612a2c57fe5b15613c64576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613c7b57fe5b60200260200101516001600160a01b03161415613cd4576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613c01565b50603b5462010000900460ff1615613d33576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613e245760376000858584818110613d4e57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613e1c57600160376000868685818110613d8a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613ddf57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613d36565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613eb457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e96575b5050935050505060405180910390a1505050565b60006110f68261510b565b6035546001600160a01b0390811691161490565b603554600090600160a81b900460ff1615613f0c57613f0582614644565b9050610ec7565b506036546001600160a01b03828116911614610ec7565b60008151604114613f7b576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613fec5760405162461bcd60e51b81526004018080602001828103825260228152602001806157426022913960400191505060405180910390fd5b8060ff16601b1415801561400457508060ff16601c14155b156140405760405162461bcd60e51b81526004018080602001828103825260228152602001806157846022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561409c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614104576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b60008061411a83614d78565b509098975050505050505050565b61413061519c565b80603e541015614187576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e546141949082614c86565b603e819055604080548151928352602083015280516000805160206157648339815191529281900390910190a150565b6033546000906001600160a01b0316614224576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561427057600080fd5b505afa158015614284573d6000803e3d6000fd5b505050506040513d602081101561429a57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156142e557600080fd5b505afa1580156142f9573d6000803e3d6000fd5b505050506040513d602081101561430f57600080fd5b505192915050565b80158061439d575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561436f57600080fd5b505afa158015614383573d6000803e3d6000fd5b505050506040513d602081101561439957600080fd5b5051155b6143d85760405162461bcd60e51b815260040180806020018281038252603681526020018061588a6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261442a908490614550565b505050565b3b151590565b60008061444183614d78565b509198975050505050505050565b60008061445d603c546141c4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156144c85781810151838201526020016144b0565b50505050905090810190601f1680156144f55780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561451257600080fd5b505afa158015614526573d6000803e3d6000fd5b505050506040513d604081101561453c57600080fd5b508051602090910151909590945092505050565b60606145a5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166151e99092919063ffffffff16565b80519091501561442a578080602001905160208110156145c457600080fd5b505161442a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061583d602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b60006146516034546141c4565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156142e557600080fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b303b1590565b600054610100900460ff16806147555750614755614736565b80614763575060005460ff16155b61479e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff161580156147c9576000805460ff1961ff0019909116610100171660011790555b6035805460ff60a81b1916600160a81b1790558015611a4e576000805461ff001916905550565b600054610100900460ff16806148095750614809614736565b80614817575060005460ff16155b6148525760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff1615801561487d576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156148a857603380546001600160a01b0319166001600160a01b0384161790555b80156148ba576000805461ff00191690555b5050565b600054610100900460ff16806148d757506148d7614736565b806148e5575060005460ff16155b6149205760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff1615801561494b576000805460ff1961ff0019909116610100171660011790555b81156148a857603482905580156148ba576000805461ff00191690555050565b600054610100900460ff16806149845750614984614736565b80614992575060005460ff16155b6149cd5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff161580156149f8576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614a7057604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1801561442a576000805461ff0019169055505050565b600054610100900460ff1680614ae35750614ae3614736565b80614af1575060005460ff16155b614b2c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015614b57576000805460ff1961ff0019909116610100171660011790555b614b60826151f8565b6000614b6a614f9c565b505050505091505060008111614bb7576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614bd64262015180614c2c565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a15050801561442a576000805461ff0019169055505050565b600082820183811015611963576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061196383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506152a5565b6001600160a01b038216614cee57614ce96001600160a01b038416826152ff565b61442a565b61442a6001600160a01b03831684836153e4565b6000614d0f603c546141c4565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614d4757600080fd5b505afa158015614d5b573d6000803e3d6000fd5b505050506040513d6020811015614d7157600080fd5b5051905090565b6060600080600080600080614d8e603c546141c4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614dda57600080fd5b505afa158015614dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614e1757600080fd5b8101908080516040519392919084600160201b821115614e3657600080fd5b908301906020820185811115614e4b57600080fd5b8251600160201b811182820188101715614e6457600080fd5b82525081516020918201929091019080838360005b83811015614e91578181015183820152602001614e79565b50505050905090810190601f168015614ebe5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614f10575060006110f6565b82820282848281614f1d57fe5b04146119635760405162461bcd60e51b81526004018080602001828103825260218152602001806157a66021913960400191505060405180910390fd5b600061196383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615436565b6060600080600080600080614fb2603c546141c4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614fea57600080fd5b505afa158015614ffe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561502757600080fd5b8101908080516040519392919084600160201b82111561504657600080fd5b90830190602082018581111561505b57600080fd5b8251600160201b81118282018810171561507457600080fd5b82525081516020918201929091019080838360005b838110156150a1578181015183820152602001615089565b50505050905090810190601f1680156150ce5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561519557604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561516257600080fd5b505afa158015615176573d6000803e3d6000fd5b505050506040513d602081101561518c57600080fd5b50519050610ec7565b5047610ec7565b604054421115612ccc576151b34262015180614c2c565b6040818155603d54603e8190558151908152602081019290925280516000805160206157648339815191529281900390910190a1565b60606111cb848460008561549b565b600054610100900460ff16806152115750615211614736565b8061521f575060005460ff16155b61525a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015615285576000805460ff1961ff0019909116610100171660011790555b81156148a857603c82905580156148ba576000805461ff00191690555050565b600081848411156152f75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b505050900390565b80471015615354576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d806000811461539f576040519150601f19603f3d011682016040523d82523d6000602084013e6153a4565b606091505b505090508061442a5760405162461bcd60e51b815260040180806020018281038252603a815260200180615708603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261442a908490614550565b600081836154855760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b50600083858161549157fe5b0495945050505050565b60606154a68561442f565b6154f7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106155365780518252601f199092019160209182019101615517565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615598576040519150601f19603f3d011682016040523d82523d6000602084013e61559d565b606091505b509150915081156155b15791506111cb9050565b8051156155c15780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561180a5781810151838201526020016117f2565b5080546000825590600052602060002090810190611a4e9190615689565b828054828255906000526020600020908101928215615679579160200282015b828111156156795781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615646565b5061568592915061569e565b5090565b5b80821115615685576000815560010161568a565b5b808211156156855780546001600160a01b031916815560010161569f56fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212209248034679cfcbfce5a6a08348a59eb551c53f047393fa07dd5058ce7f5aa1d264736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index fb9da3a5..b097d855 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a264697066735822122022c9365b7a18bb94c987a4c7a9d21133e8db6cc949894cefce3d9a0e7e9a9ab364736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a264697066735822122093e29804252de65547daf27ec36f5c117212e98f7ccf8955e5276004911811aa64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { From d7fd8af4ed350bf4a1b6767e99b67b86057081b7 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 26 Nov 2020 11:31:52 +0100 Subject: [PATCH 46/66] update slither --- tools/slither/slither.db.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/slither/slither.db.json b/tools/slither/slither.db.json index fb31cc06..4872ec8f 100644 --- a/tools/slither/slither.db.json +++ b/tools/slither/slither.db.json @@ -1 +1 @@ -[{"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3520, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [85], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#85)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L85)\n", "id": "8f154ecfc5824e3b987314d0a2f5e529d003edef50be40d366b15f160d857e1c", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3451, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [83], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#83)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L83)\n", "id": "b29cdb51c11b209fa6cbae7acc6eaa1139948abf695c7c82dd1dc272cd236cd2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 4041, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4149, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "23ece0d6e57608c6c57add03c9e58044d357633c8cdab578e48ffcc72f8dd86a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4843, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "37e5ae3fd03f04bd9c52830c372f415d3a32cab48338b06a9d00c56d48f3804b", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4880, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "791c5f8285dd95ff5dce366ad41ab8ab3c4a8d5d8f5298264ad1051199435b2c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 27982, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [583], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 28560, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [592], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#563-593) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#583)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#592)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L563-L593) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L583)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L592)\n", "id": "1e0b234747807fbb5245169570b2b7fb9f07f78ac1afa8e1be592afb1191efcd", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20581, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [437], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20705, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [440], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#418-441):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#437)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#440)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L418-L441):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L437)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L440)\n", "id": "3a35fb3bee7858d2e5e2dfe41b98c442fc8f9866db6fcf679aac1497dd758db8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30453, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [626], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30675, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [632], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#626)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#632)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L626)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L632)\n", "id": "c1a1c741ecef7d0ec1b421c1549e41a3c5de2e1da3390cb741cba8a00040234a", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30774, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [636], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30912, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [639], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#636)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#639)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L636)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L639)\n", "id": "74afa6312b4eb14d15de176af037db957fb7df33a76e2c3d7a6117ac1a1fb22c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23188, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23253, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23413, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [497], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#481-498):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#491)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#492)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#497)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L481-L498):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L491)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L492)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L497)\n", "id": "77327b12f5a5c8c7964e978adbdcbe01bc6a937432ecfb766b117fde7232da34", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14216, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [298], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#297-303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#298)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L297-L303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L298)\n", "id": "73f9c07c94114fae31ba92b92e7ca095093697dfe1a61ce7761e9a46eaf02c44", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16062, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [342], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#341-349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#342)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L341-L349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L342)\n", "id": "1c842f34e2052c53a5f20027dbc7c11424de7477557713fb885cc7a53b3665e8", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24279, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [513], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24352, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [515], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#507-516):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#513)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#515)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L507-L516):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L513)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L515)\n", "id": "5a28f20b36e8e9aae8526a3b185ba0f8347ba516247b1ee9cbead8908ff836a7", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 28593, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [604], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 29171, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [613], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#588-614) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#604)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#613)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L588-L614) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L604)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L613)\n", "id": "9bda81c6a396bc6e5af3ccdc7c781eb7305c37a94bf87db3c9ccbfeb5ae5b3eb", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 12438, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265], "starting_column": 52, "ending_column": 79}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeDailyLimit", "source_mapping": {"start": 12391, "length": 321, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265, 266, 267, 268, 269, 270, 271, 272], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeDailyLimit(uint256,bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#265) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L265) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "e5bb81054c4147256bf3aaebe7ef7cdeedd5bd5182d32dc08afd644b0f9e0116", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 29569, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [622], "starting_column": 9, "ending_column": 23}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.executeTransaction(address,uint256,bytes)._value (../../contracts/wallet.sol#622) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.executeTransaction(address,uint256,bytes)._value](../../contracts/wallet.sol#L622) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "90bfcd468a576433295dc979256339d182d72c064d955766641725f26a929749", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 19206, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419], "starting_column": 24, "ending_column": 38}, "type_specific_fields": {"parent": {"type": "function", "name": "isNotZero", "source_mapping": {"start": 19187, "length": 94, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419, 420, 421, 422], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "isNotZero(uint256)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.isNotZero(uint256)._value (../../contracts/wallet.sol#419) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.isNotZero(uint256)._value](../../contracts/wallet.sol#L419) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "1e335a6c51143516ea2aacb63ebfae14b068c26f1fc55aea86d9a1530cbc2bf0", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20593, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [448], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20717, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [451], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#429-452):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#448)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#451)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L429-L452):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L448)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L451)\n", "id": "ec79e84527eef8746fa9ec647fc99366159eb2609e4213975bce953241a24c1b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30827, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [644], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 31049, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [650], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#644)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#650)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L644)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L650)\n", "id": "ecf8400146003c4b7b7e44c18ee6d86249787a89215657c598f9e3cb3b72319b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 31148, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 31286, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [657], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#654)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#657)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L654)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L657)\n", "id": "b5a1c394bd5406139a742ec93ae05a64d17d4f50fa4e3bd83ce7efa4d1a53cfa", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23200, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [502], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23265, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [503], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23425, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#492-509):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#502)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#503)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#508)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L492-L509):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L502)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L503)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L508)\n", "id": "3b788cb6a30b3f641772c7e7583a408a1bd7f85564b33648492384ce610931e7", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 13877, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L301)\n", "id": "a93d679b54ec36d932fcff36e21d2a580a2dfd6cdf2a38b039c9235b67baccb9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 16104, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#352-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#353)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L352-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L353)\n", "id": "e35a8401ff8c2805f39f87764799163bcf46e67e24e9f0dc1ca8af147616ab94", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24291, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [524], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24364, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [526], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#518-527):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#524)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#526)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L518-L527):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L524)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L526)\n", "id": "c43efe0610e655bec1cdb32e08e234a043a3b790995b3136e9ab21e91d3bc687", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] \ No newline at end of file +[{"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 29701, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [637], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 30279, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [646], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#617-647) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#637)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#646)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L617-L647) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L637)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L646)\n", "id": "d2c5cb2e5931b94801f80e0acda602945a4805c0108658fe67563a7fe48aded6", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 22307, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 22431, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#472-495):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#491)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#494)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L472-L495):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L491)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L494)\n", "id": "a8d590b479be6c7a5486a15f28b79f1ed4179ef88e16654bee70e3c4840270ac", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 32172, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [680], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 32394, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [686], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#680)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#686)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L680)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L686)\n", "id": "986bd40ae5ee76690167450a3abc2d74f1b560e57f7e039af9cad3096385c0c0", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 32493, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [690], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 32631, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [693], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#690)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#693)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L690)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L693)\n", "id": "8f6b4e2d1a128b9a63a81a91967f7d3da642da1f7a2815bccf113f8d39a02a9b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 24914, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [545], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 24979, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [546], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 25139, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [551], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#535-552):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#545)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#546)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#551)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L535-L552):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L545)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L546)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L551)\n", "id": "5d28da95b1f9bdee832322c8cd183afab1c956d24a6b3f2e67483c85a87fe6a5", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 15923, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [351], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#350-356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#351)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L350-L356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L351)\n", "id": "b4af7a01c46ddfad3f8ece6253cd966f942fd4d9ad2c113e52c50bdbdbbb6f3a", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 17769, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#394-402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#395)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L394-L402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L395)\n", "id": "7771a43c1a0d9f6b6d925730066b4c66691ecd08134f1be5f9f612a08bef77bc", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 25998, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [567], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 26071, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [569], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#561-570):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#567)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#569)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L561-L570):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L567)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L569)\n", "id": "5194d4fef8f9d6c33183161cb43e75b034bdafb4203afb207216d0b2cb034a17", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3520, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [85], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#85)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L85)\n", "id": "8f154ecfc5824e3b987314d0a2f5e529d003edef50be40d366b15f160d857e1c", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3451, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [83], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#83)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L83)\n", "id": "b29cdb51c11b209fa6cbae7acc6eaa1139948abf695c7c82dd1dc272cd236cd2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 4041, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4149, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "23ece0d6e57608c6c57add03c9e58044d357633c8cdab578e48ffcc72f8dd86a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4843, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "37e5ae3fd03f04bd9c52830c372f415d3a32cab48338b06a9d00c56d48f3804b", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4880, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "791c5f8285dd95ff5dce366ad41ab8ab3c4a8d5d8f5298264ad1051199435b2c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 27982, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [583], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 28560, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [592], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#563-593) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#583)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#592)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L563-L593) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L583)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L592)\n", "id": "1e0b234747807fbb5245169570b2b7fb9f07f78ac1afa8e1be592afb1191efcd", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20581, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [437], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20705, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [440], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#418-441):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#437)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#440)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L418-L441):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L437)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L440)\n", "id": "3a35fb3bee7858d2e5e2dfe41b98c442fc8f9866db6fcf679aac1497dd758db8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30453, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [626], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30675, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [632], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#626)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#632)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L626)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L632)\n", "id": "c1a1c741ecef7d0ec1b421c1549e41a3c5de2e1da3390cb741cba8a00040234a", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30774, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [636], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30912, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [639], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#636)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#639)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L636)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L639)\n", "id": "74afa6312b4eb14d15de176af037db957fb7df33a76e2c3d7a6117ac1a1fb22c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23188, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23253, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23413, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [497], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#481-498):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#491)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#492)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#497)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L481-L498):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L491)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L492)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L497)\n", "id": "77327b12f5a5c8c7964e978adbdcbe01bc6a937432ecfb766b117fde7232da34", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14216, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [298], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#297-303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#298)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L297-L303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L298)\n", "id": "73f9c07c94114fae31ba92b92e7ca095093697dfe1a61ce7761e9a46eaf02c44", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16062, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [342], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#341-349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#342)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L341-L349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L342)\n", "id": "1c842f34e2052c53a5f20027dbc7c11424de7477557713fb885cc7a53b3665e8", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24279, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [513], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24352, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [515], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#507-516):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#513)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#515)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L507-L516):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L513)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L515)\n", "id": "5a28f20b36e8e9aae8526a3b185ba0f8347ba516247b1ee9cbead8908ff836a7", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 28593, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [604], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 29171, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [613], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#588-614) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#604)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#613)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L588-L614) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L604)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L613)\n", "id": "9bda81c6a396bc6e5af3ccdc7c781eb7305c37a94bf87db3c9ccbfeb5ae5b3eb", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 12438, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265], "starting_column": 52, "ending_column": 79}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeDailyLimit", "source_mapping": {"start": 12391, "length": 321, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265, 266, 267, 268, 269, 270, 271, 272], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeDailyLimit(uint256,bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#265) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L265) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "e5bb81054c4147256bf3aaebe7ef7cdeedd5bd5182d32dc08afd644b0f9e0116", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 29569, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [622], "starting_column": 9, "ending_column": 23}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.executeTransaction(address,uint256,bytes)._value (../../contracts/wallet.sol#622) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.executeTransaction(address,uint256,bytes)._value](../../contracts/wallet.sol#L622) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "90bfcd468a576433295dc979256339d182d72c064d955766641725f26a929749", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 19206, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419], "starting_column": 24, "ending_column": 38}, "type_specific_fields": {"parent": {"type": "function", "name": "isNotZero", "source_mapping": {"start": 19187, "length": 94, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419, 420, 421, 422], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "isNotZero(uint256)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.isNotZero(uint256)._value (../../contracts/wallet.sol#419) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.isNotZero(uint256)._value](../../contracts/wallet.sol#L419) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "1e335a6c51143516ea2aacb63ebfae14b068c26f1fc55aea86d9a1530cbc2bf0", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20593, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [448], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20717, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [451], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#429-452):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#448)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#451)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L429-L452):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L448)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L451)\n", "id": "ec79e84527eef8746fa9ec647fc99366159eb2609e4213975bce953241a24c1b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30827, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [644], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 31049, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [650], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#644)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#650)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L644)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L650)\n", "id": "ecf8400146003c4b7b7e44c18ee6d86249787a89215657c598f9e3cb3b72319b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 31148, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 31286, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [657], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#654)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#657)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L654)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L657)\n", "id": "b5a1c394bd5406139a742ec93ae05a64d17d4f50fa4e3bd83ce7efa4d1a53cfa", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23200, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [502], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23265, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [503], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23425, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#492-509):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#502)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#503)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#508)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L492-L509):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L502)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L503)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L508)\n", "id": "3b788cb6a30b3f641772c7e7583a408a1bd7f85564b33648492384ce610931e7", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 13877, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L301)\n", "id": "a93d679b54ec36d932fcff36e21d2a580a2dfd6cdf2a38b039c9235b67baccb9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 16104, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#352-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#353)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L352-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L353)\n", "id": "e35a8401ff8c2805f39f87764799163bcf46e67e24e9f0dc1ca8af147616ab94", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24291, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [524], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24364, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [526], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#518-527):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#524)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#526)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L518-L527):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L524)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L526)\n", "id": "c43efe0610e655bec1cdb32e08e234a043a3b790995b3136e9ab21e91d3bc687", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] \ No newline at end of file From bda7d191d10ba907925e7cc055dfda01c0734c49 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 26 Nov 2020 14:21:52 +0100 Subject: [PATCH 47/66] update slither --- tools/slither/slither.db.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/slither/slither.db.json b/tools/slither/slither.db.json index fb31cc06..e1971379 100644 --- a/tools/slither/slither.db.json +++ b/tools/slither/slither.db.json @@ -1 +1 @@ -[{"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3520, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [85], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#85)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L85)\n", "id": "8f154ecfc5824e3b987314d0a2f5e529d003edef50be40d366b15f160d857e1c", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3451, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [83], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#83)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L83)\n", "id": "b29cdb51c11b209fa6cbae7acc6eaa1139948abf695c7c82dd1dc272cd236cd2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 4041, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4149, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "23ece0d6e57608c6c57add03c9e58044d357633c8cdab578e48ffcc72f8dd86a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4843, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "37e5ae3fd03f04bd9c52830c372f415d3a32cab48338b06a9d00c56d48f3804b", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4880, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "791c5f8285dd95ff5dce366ad41ab8ab3c4a8d5d8f5298264ad1051199435b2c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 27982, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [583], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 28560, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [592], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#563-593) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#583)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#592)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L563-L593) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L583)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L592)\n", "id": "1e0b234747807fbb5245169570b2b7fb9f07f78ac1afa8e1be592afb1191efcd", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20581, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [437], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20705, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [440], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#418-441):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#437)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#440)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L418-L441):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L437)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L440)\n", "id": "3a35fb3bee7858d2e5e2dfe41b98c442fc8f9866db6fcf679aac1497dd758db8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30453, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [626], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30675, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [632], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#626)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#632)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L626)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L632)\n", "id": "c1a1c741ecef7d0ec1b421c1549e41a3c5de2e1da3390cb741cba8a00040234a", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30774, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [636], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30912, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [639], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#636)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#639)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L636)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L639)\n", "id": "74afa6312b4eb14d15de176af037db957fb7df33a76e2c3d7a6117ac1a1fb22c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23188, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23253, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23413, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [497], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#481-498):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#491)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#492)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#497)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L481-L498):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L491)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L492)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L497)\n", "id": "77327b12f5a5c8c7964e978adbdcbe01bc6a937432ecfb766b117fde7232da34", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14216, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [298], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#297-303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#298)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L297-L303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L298)\n", "id": "73f9c07c94114fae31ba92b92e7ca095093697dfe1a61ce7761e9a46eaf02c44", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16062, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [342], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#341-349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#342)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L341-L349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L342)\n", "id": "1c842f34e2052c53a5f20027dbc7c11424de7477557713fb885cc7a53b3665e8", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24279, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [513], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24352, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [515], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#507-516):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#513)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#515)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L507-L516):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L513)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L515)\n", "id": "5a28f20b36e8e9aae8526a3b185ba0f8347ba516247b1ee9cbead8908ff836a7", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 28593, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [604], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 29171, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [613], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#588-614) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#604)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#613)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L588-L614) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L604)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L613)\n", "id": "9bda81c6a396bc6e5af3ccdc7c781eb7305c37a94bf87db3c9ccbfeb5ae5b3eb", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 12438, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265], "starting_column": 52, "ending_column": 79}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeDailyLimit", "source_mapping": {"start": 12391, "length": 321, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265, 266, 267, 268, 269, 270, 271, 272], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeDailyLimit(uint256,bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#265) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L265) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "e5bb81054c4147256bf3aaebe7ef7cdeedd5bd5182d32dc08afd644b0f9e0116", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 29569, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [622], "starting_column": 9, "ending_column": 23}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.executeTransaction(address,uint256,bytes)._value (../../contracts/wallet.sol#622) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.executeTransaction(address,uint256,bytes)._value](../../contracts/wallet.sol#L622) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "90bfcd468a576433295dc979256339d182d72c064d955766641725f26a929749", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 19206, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419], "starting_column": 24, "ending_column": 38}, "type_specific_fields": {"parent": {"type": "function", "name": "isNotZero", "source_mapping": {"start": 19187, "length": 94, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419, 420, 421, 422], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "isNotZero(uint256)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.isNotZero(uint256)._value (../../contracts/wallet.sol#419) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.isNotZero(uint256)._value](../../contracts/wallet.sol#L419) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "1e335a6c51143516ea2aacb63ebfae14b068c26f1fc55aea86d9a1530cbc2bf0", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20593, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [448], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20717, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [451], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#429-452):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#448)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#451)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L429-L452):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L448)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L451)\n", "id": "ec79e84527eef8746fa9ec647fc99366159eb2609e4213975bce953241a24c1b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30827, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [644], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 31049, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [650], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#644)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#650)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L644)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L650)\n", "id": "ecf8400146003c4b7b7e44c18ee6d86249787a89215657c598f9e3cb3b72319b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 31148, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 31286, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [657], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#654)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#657)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L654)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L657)\n", "id": "b5a1c394bd5406139a742ec93ae05a64d17d4f50fa4e3bd83ce7efa4d1a53cfa", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23200, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [502], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23265, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [503], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23425, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#492-509):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#502)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#503)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#508)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L492-L509):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L502)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L503)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L508)\n", "id": "3b788cb6a30b3f641772c7e7583a408a1bd7f85564b33648492384ce610931e7", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 13877, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L301)\n", "id": "a93d679b54ec36d932fcff36e21d2a580a2dfd6cdf2a38b039c9235b67baccb9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 16104, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#352-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#353)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L352-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L353)\n", "id": "e35a8401ff8c2805f39f87764799163bcf46e67e24e9f0dc1ca8af147616ab94", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24291, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [524], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24364, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [526], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#518-527):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#524)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#526)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L518-L527):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L524)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L526)\n", "id": "c43efe0610e655bec1cdb32e08e234a043a3b790995b3136e9ab21e91d3bc687", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] \ No newline at end of file +[{"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 17097, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 7313, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 18028, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [381], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 17097, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 7313, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 18606, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [390], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 17097, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 7313, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "DailyLimit.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#361-391) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#381)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#390)\n", "markdown": "[DailyLimit.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L361-L391) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L381)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L390)\n", "id": "2d4302b86aa68e1f5ebedd30641a62fd93c1b5c9429278c12441c477ce599dde", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21923, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 22883, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [479], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21923, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 23007, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [482], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21923, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#460-483):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#479)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#482)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L460-L483):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L479)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L482)\n", "id": "44ebd22d5079fd915928fd5363e26a01538a3360c70d07e56bc53142c07ec5f8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29201, "length": 1962, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30535, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [628], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29201, "length": 1962, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30757, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [634], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29201, "length": 1962, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#603-644):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#628)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#634)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L603-L644):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L628)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L634)\n", "id": "d03258508373289cf172ce683f52f43386165f0739185893ea1b9d2b3d22f49b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29201, "length": 1962, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30856, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29201, "length": 1962, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30994, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29201, "length": 1962, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#603-644):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#638)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#641)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L603-L644):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L638)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L641)\n", "id": "56f680e2d317bd279bbd018f1484b97c193c05c2b35f8bd551eaa633f9e2201b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24820, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 25365, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [531], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24820, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 25430, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [532], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24820, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25507, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [534], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24820, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25507, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [534], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24820, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 25590, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [537], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24820, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#523-538):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#531)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#532)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#534)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#534)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#537)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L523-L538):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L531)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L532)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L534)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L534)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L537)\n", "id": "8479db5275eb4b8916307cc352cd0ebc9a6f91e1b63642dfc9d766e1250fa5ab", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14404, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 7313, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14481, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14404, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 7313, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L301)\n", "id": "04af66d91789da42297b57b5050a1bf96b296535404cdeaad90c38acf4a48f1d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16425, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [347, 348, 349, 350, 351, 352, 353, 354, 355], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 7313, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16485, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [348], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16425, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [347, 348, 349, 350, 351, 352, 353, 354, 355], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 7313, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#347-355) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#348)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L347-L355) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L348)\n", "id": "726a17aa42a5ffca92d2ec07d994f0cb045d1c215b5cad2a1ddcd4bfc64a594f", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 26025, "length": 569, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [547, 548, 549, 550, 551, 552, 553, 554, 555, 556], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 26468, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [553], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 26025, "length": 569, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [547, 548, 549, 550, 551, 552, 553, 554, 555, 556], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 26541, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [555], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 26025, "length": 569, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [547, 548, 549, 550, 551, 552, 553, 554, 555, 556], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18779, "length": 14039, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#547-556):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#553)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#555)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L547-L556):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L553)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L555)\n", "id": "89e9850418e949cd9a5423e41105a37b7e9dfa5b92e6a06eb0769a2d4a0b43fa", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3520, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [85], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#85)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L85)\n", "id": "8f154ecfc5824e3b987314d0a2f5e529d003edef50be40d366b15f160d857e1c", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3451, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [83], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#83)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L83)\n", "id": "b29cdb51c11b209fa6cbae7acc6eaa1139948abf695c7c82dd1dc272cd236cd2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 4041, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4149, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "23ece0d6e57608c6c57add03c9e58044d357633c8cdab578e48ffcc72f8dd86a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4843, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "37e5ae3fd03f04bd9c52830c372f415d3a32cab48338b06a9d00c56d48f3804b", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4880, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "791c5f8285dd95ff5dce366ad41ab8ab3c4a8d5d8f5298264ad1051199435b2c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 27982, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [583], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 28560, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [592], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#563-593) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#583)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#592)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L563-L593) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L583)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L592)\n", "id": "1e0b234747807fbb5245169570b2b7fb9f07f78ac1afa8e1be592afb1191efcd", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20581, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [437], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20705, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [440], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#418-441):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#437)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#440)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L418-L441):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L437)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L440)\n", "id": "3a35fb3bee7858d2e5e2dfe41b98c442fc8f9866db6fcf679aac1497dd758db8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30453, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [626], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30675, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [632], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#626)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#632)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L626)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L632)\n", "id": "c1a1c741ecef7d0ec1b421c1549e41a3c5de2e1da3390cb741cba8a00040234a", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30774, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [636], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30912, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [639], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#636)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#639)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L636)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L639)\n", "id": "74afa6312b4eb14d15de176af037db957fb7df33a76e2c3d7a6117ac1a1fb22c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23188, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23253, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23413, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [497], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#481-498):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#491)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#492)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#497)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L481-L498):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L491)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L492)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L497)\n", "id": "77327b12f5a5c8c7964e978adbdcbe01bc6a937432ecfb766b117fde7232da34", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14216, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [298], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#297-303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#298)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L297-L303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L298)\n", "id": "73f9c07c94114fae31ba92b92e7ca095093697dfe1a61ce7761e9a46eaf02c44", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16062, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [342], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#341-349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#342)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L341-L349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L342)\n", "id": "1c842f34e2052c53a5f20027dbc7c11424de7477557713fb885cc7a53b3665e8", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24279, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [513], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24352, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [515], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#507-516):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#513)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#515)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L507-L516):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L513)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L515)\n", "id": "5a28f20b36e8e9aae8526a3b185ba0f8347ba516247b1ee9cbead8908ff836a7", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 28593, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [604], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 29171, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [613], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#588-614) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#604)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#613)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L588-L614) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L604)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L613)\n", "id": "9bda81c6a396bc6e5af3ccdc7c781eb7305c37a94bf87db3c9ccbfeb5ae5b3eb", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 12438, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265], "starting_column": 52, "ending_column": 79}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeDailyLimit", "source_mapping": {"start": 12391, "length": 321, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265, 266, 267, 268, 269, 270, 271, 272], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeDailyLimit(uint256,bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#265) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L265) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "e5bb81054c4147256bf3aaebe7ef7cdeedd5bd5182d32dc08afd644b0f9e0116", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 29569, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [622], "starting_column": 9, "ending_column": 23}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.executeTransaction(address,uint256,bytes)._value (../../contracts/wallet.sol#622) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.executeTransaction(address,uint256,bytes)._value](../../contracts/wallet.sol#L622) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "90bfcd468a576433295dc979256339d182d72c064d955766641725f26a929749", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 19206, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419], "starting_column": 24, "ending_column": 38}, "type_specific_fields": {"parent": {"type": "function", "name": "isNotZero", "source_mapping": {"start": 19187, "length": 94, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419, 420, 421, 422], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "isNotZero(uint256)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.isNotZero(uint256)._value (../../contracts/wallet.sol#419) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.isNotZero(uint256)._value](../../contracts/wallet.sol#L419) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "1e335a6c51143516ea2aacb63ebfae14b068c26f1fc55aea86d9a1530cbc2bf0", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20593, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [448], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20717, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [451], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#429-452):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#448)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#451)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L429-L452):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L448)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L451)\n", "id": "ec79e84527eef8746fa9ec647fc99366159eb2609e4213975bce953241a24c1b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30827, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [644], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 31049, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [650], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#644)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#650)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L644)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L650)\n", "id": "ecf8400146003c4b7b7e44c18ee6d86249787a89215657c598f9e3cb3b72319b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 31148, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 31286, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [657], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#654)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#657)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L654)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L657)\n", "id": "b5a1c394bd5406139a742ec93ae05a64d17d4f50fa4e3bd83ce7efa4d1a53cfa", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23200, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [502], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23265, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [503], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23425, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#492-509):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#502)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#503)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#508)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L492-L509):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L502)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L503)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L508)\n", "id": "3b788cb6a30b3f641772c7e7583a408a1bd7f85564b33648492384ce610931e7", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 13877, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L301)\n", "id": "a93d679b54ec36d932fcff36e21d2a580a2dfd6cdf2a38b039c9235b67baccb9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 16104, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#352-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#353)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L352-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L353)\n", "id": "e35a8401ff8c2805f39f87764799163bcf46e67e24e9f0dc1ca8af147616ab94", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24291, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [524], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24364, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [526], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#518-527):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#524)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#526)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L518-L527):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L524)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L526)\n", "id": "c43efe0610e655bec1cdb32e08e234a043a3b790995b3136e9ab21e91d3bc687", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] \ No newline at end of file From 1aa2c60ea313d1f93c24d2ee9cbda178436e31e7 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 3 Dec 2020 13:19:57 +0100 Subject: [PATCH 48/66] add privileged mode --- contracts/controller.sol | 6 ++++++ contracts/wallet.sol | 42 +++++++++++++++++++++++++++++----------- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/contracts/controller.sol b/contracts/controller.sol index 7c9322e7..82ce6bf6 100644 --- a/contracts/controller.sol +++ b/contracts/controller.sol @@ -61,6 +61,12 @@ contract Controller is IController, Ownable, Transferrable { _; } + /// @notice Checks if message sender is a controller. + modifier onlyController() { + require(_isController[msg.sender], "sender is not controller"); + _; + } + /// @notice Check if Owner or Admin modifier onlyAdminOrOwner() { require(_isOwner(msg.sender) || _isAdmin[msg.sender], "sender is not admin or owner"); diff --git a/contracts/wallet.sol b/contracts/wallet.sol index a8bf6df7..3987f210 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -42,6 +42,8 @@ contract OptOutableMonolith2FA is Controllable, Ownable { event SetPersonal2FA(address _sender, address _p2FA); event SetMonolith2FA(address _sender); + /// @dev for accessing wallet in privileged mode. + bool public privileged; bool public monolith2FA; address public personal2FA; @@ -52,7 +54,7 @@ contract OptOutableMonolith2FA is Controllable, Ownable { // @dev This modifier ensures that a method is only accessible to 2nd factor modifier only2FA() { if (monolith2FA) { - require(_isController(msg.sender), "sender is not controller"); + require(_isController(msg.sender), "sender is not a Monolith 2FA"); } else { require(msg.sender == personal2FA, "sender is not personal 2FA account"); } @@ -73,7 +75,9 @@ contract OptOutableMonolith2FA is Controllable, Ownable { emit SetMonolith2FA(msg.sender); } + /// @dev set personal 2FA to the address the user provided, needs to be called by a privileged relayed Tx function setPersonal2FA(address _p2FA) external onlyOwner { + require(privileged, "Setting a personal 2FA requires privileged mode"); require(_p2FA != address(0), "2FA cannot be set to zero"); require(_p2FA != personal2FA, "address already set"); require(_p2FA != address(this), "2FA cannot be the wallet address"); @@ -409,7 +413,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe using SafeERC20 for IERC20; using SafeMath for uint256; - event ExecutedRelayedTransaction(bytes _data, bytes _returnData); + event ExecutedRelayedTransaction(bytes _data, bytes _returnData, bool _privileged); event ExecutedTransaction(address _destination, uint256 _value, bytes _data, bytes _returnData); event IncreasedRelayNonce(address _sender, uint256 _currentNonce); event LoadedTokenCard(address _asset, uint256 _amount); @@ -464,16 +468,27 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe _; } + /// Meta-transaction + function executeRelayedTransaction (uint _nonce, bytes calldata _data, bytes calldata _signature) external onlyController { + return _executeRelayedTransaction(_nonce, _data, _signature, false); + } + + /// Privileged functionality + function executePrivilegedRelayedTransaction (uint _nonce, bytes calldata _data, bytes calldata _signature) external only2FA { + return _executeRelayedTransaction(_nonce, _data, _signature, true); + } + /// @dev This function allows for the controller to relay transactions on the owner's behalf, /// the relayed message has to be signed by the owner. /// @param _nonce only used for relayed transactions, must match the wallet's relayNonce. /// @param _data abi encoded data payload. /// @param _signature signed prefix + data. - function executeRelayedTransaction( + function _executeRelayedTransaction( uint256 _nonce, bytes calldata _data, - bytes calldata _signature - ) external only2FA { + bytes calldata _signature, + bool _privileged + ) private { // Expecting prefixed data ("monolith:") indicating relayed transaction... // ...and an Ethereum Signed Message to protect user from signing an actual Tx uint256 id; @@ -487,11 +502,16 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe require(_nonce == relayNonce, "tx replay"); _increaseRelayNonce(); + // TO DO: an "if(_privileged) {privileged = _privileged} should be less expensive + privileged = _privileged; + batchExecuteTransaction(_data); + privileged = false; + // invoke wallet function with an external call (bool success, bytes memory returnData) = address(this).call(_data); require(success, string(returnData)); - emit ExecutedRelayedTransaction(_data, returnData); + emit ExecutedRelayedTransaction(_data, returnData, _privileged); } /// @dev This returns the balance of the contract for any ERC20 token or ETH. @@ -573,7 +593,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe /// it calls executeTransaction() so that the daily limit is enforced. /// @param _transactionBatch data encoding the transactions to be sent, /// following executeTransaction's format i.e. (destination, value, data) - function batchExecuteTransaction(bytes memory _transactionBatch) public onlyOwnerOrSelf { + function batchExecuteTransaction(bytes memory _transactionBatch) public onlyOwnerOr2FA { uint256 batchLength = _transactionBatch.length + 32; // because the pos starts from 32 uint256 remainingBytesLength = _transactionBatch.length; // remaining bytes to be processed uint256 pos = 32; //the first 32 bytes denote the byte array length, start from actual data @@ -654,10 +674,10 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe address _destination, uint256 _value, bytes memory _data - ) public onlyOwnerOrSelf returns (bytes memory) { + ) public onlyOwnerOr2FA returns (bytes memory) { // If value is send across as a part of this executeTransaction, this will be sent to any payable // destination. As a result enforceLimit if destination is not whitelisted. - if (!whitelistMap[_destination]) { + if (!whitelistMap[_destination] && !privileged) { // Convert ETH value to stablecoin, 0x0 denotes ETH. uint256 stablecoinValue = convertToStablecoin(address(0), _value); _enforceDailyLimit(stablecoinValue); @@ -668,7 +688,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe address to; uint256 amount; (to, amount) = _getERC20RecipientAndAmount(_destination, _data); - if (!whitelistMap[to]) { + if (!whitelistMap[to] && !privileged) { // Convert token amount to stablecoin value. // If the address (of the token contract, e.g) is not in the TokenWhitelist used by the convert method // ...then stablecoinValue will be zero @@ -718,7 +738,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe require(_to != address(0), "destination=0"); // If address is not whitelisted, take daily limit into account. - if (!whitelistMap[_to]) { + if (!whitelistMap[_to] && !privileged) { // Convert token amount to stablecoin value. // If the address (of the token contract) is not in the TokenWhitelist used by the convert method... // ...then stablecoinValue will be zero From d2c40d3e0ad8d05249522f1080390d30fb61ba49 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 3 Dec 2020 13:20:21 +0100 Subject: [PATCH 49/66] add relayed transactions testing --- ...ute_privileged_relayed_transaction_test.go | 346 ++++++++++++++++++ .../execute_relayed_transaction_test.go | 279 ++++++++++++++ 2 files changed, 625 insertions(+) create mode 100644 test/wallet/execute_privileged_relayed_transaction_test.go create mode 100644 test/wallet/execute_relayed_transaction_test.go diff --git a/test/wallet/execute_privileged_relayed_transaction_test.go b/test/wallet/execute_privileged_relayed_transaction_test.go new file mode 100644 index 00000000..5437bb07 --- /dev/null +++ b/test/wallet/execute_privileged_relayed_transaction_test.go @@ -0,0 +1,346 @@ +package wallet_test + +import ( + "context" + "fmt" + "math/big" + "strings" + + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + . "github.com/tokencard/contracts/v3/test/shared" + "github.com/tokencard/ethertest" +) + +var _ = Describe("executePrivilegedRelayedTransaction", func() { + + BeforeEach(func() { + BankAccount.MustTransfer(Backend, WalletProxyAddress, EthToWei(4)) + }) + + When("a random account tries to relay", func() { + It("should fail", func() { + a, err := abi.JSON(strings.NewReader(WALLET_ABI)) + Expect(err).ToNot(HaveOccurred()) + data, err := a.Pack("transfer", RandomAccount.Address(), common.HexToAddress("0x0"), EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) + + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + + nonce := big.NewInt(0) + chainId := big.NewInt(1337) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, Owner.PrivKey()) + Expect(err).ToNot(HaveOccurred()) + + tx, err := WalletProxy.ExecutePrivilegedRelayedTransaction(RandomAccount.TransactOpts(ethertest.WithGasLimit(500000)), nonce, batch, signature) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not a Monolith 2FA")) + }) + }) + + When("2FA tries to relay a transaction signed by a random account", func() { + It("should fail", func() { + a, err := abi.JSON(strings.NewReader(WALLET_ABI)) + Expect(err).ToNot(HaveOccurred()) + privateKey, _ := crypto.GenerateKey() + data, err := a.Pack("transfer", RandomAccount.Address(), common.HexToAddress("0x0"), EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) + + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + + nonce := big.NewInt(0) + chainId := big.NewInt(1337) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, privateKey) + Expect(err).ToNot(HaveOccurred()) + + tx, err := WalletProxy.ExecutePrivilegedRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(500000)), nonce, batch, signature) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("only owner")) + }) + }) + + When("2FA tries to relay two owner-signed transactions: send value(no data) + transfer() with a value above the daily limiy", func() { + + BeforeEach(func() { + // Add ERC20 token to tokenWhitelist and update token rate to be equal to 1 (1 token = 1 ETH) + tx, err := TokenWhitelist.AddTokens( + ControllerAdmin.TransactOpts(), + []common.Address{ERC20Contract1Address}, + StringsToByte32( + "ERC1", + ), + []*big.Int{ + DecimalsToMagnitude(big.NewInt(18)), + }, + []bool{true}, + []bool{true}, + big.NewInt(20180913153211), + ) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + tx, err = TokenWhitelist.UpdateTokenRate(ControllerAdmin.TransactOpts(), ERC20Contract1Address, EthToWei(1), big.NewInt(20180913153211)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + // Reduce the daily limit to 100$ + tx, err = WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), MweiToWei(100)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + // credit wallet with 1 token + tx, err = ERC20Contract1.Credit(BankAccount.TransactOpts(), WalletProxyAddress, EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("should reduce the available daily balance", func() { + av, err := WalletProxy.DailyLimitAvailable(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(av.String()).To(Equal(MweiToWei(100).String())) + }) + + When("the the privileged mode is used they succeed", func() { + BeforeEach(func() { + // send value (1 ETH) > 100$ + data1 := fmt.Sprintf("%s%s%s", RandomAccount.Address(), abi.U256(EthToWei(1)), abi.U256(big.NewInt(0))) + // use wallet's ERC20 transfer to transfer the token + a, err := abi.JSON(strings.NewReader(WALLET_ABI)) + Expect(err).ToNot(HaveOccurred()) + data2, err := a.Pack("transfer", RandomAccount.Address(), ERC20Contract1Address, EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) + + batch := []byte(fmt.Sprintf("%s%s%s%s%s", data1, WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data2)))), data2)) + + nonce := big.NewInt(0) + chainId := big.NewInt(1337) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, Owner.PrivKey()) + Expect(err).ToNot(HaveOccurred()) + + tx, err := WalletProxy.ExecutePrivilegedRelayedTransaction(Controller.TransactOpts(), nonce, batch, signature) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("should emit an ExecutedRelayedTransaction event", func() { + it, err := WalletProxy.FilterExecutedRelayedTransaction(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + data1 := []byte(fmt.Sprintf("%s%s%s", RandomAccount.Address(), abi.U256(EthToWei(1)), abi.U256(big.NewInt(0)))) + a, err := abi.JSON(strings.NewReader(WALLET_ABI)) + Expect(err).ToNot(HaveOccurred()) + data2, err := a.Pack("transfer", RandomAccount.Address(), ERC20Contract1Address, EthToWei(1)) + batchData := []byte(fmt.Sprintf("%s%s%s%s%s", data1, WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data2)))), data2)) + Expect(evt.Data).To(Equal(batchData)) + Expect(evt.Privileged).To(Equal(true)) + }) + + It("should emit 2 ExecutedTransaction events", func() { + it, err := WalletProxy.FilterExecutedTransaction(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeTrue()) + Expect(evt.Destination).To(Equal(RandomAccount.Address())) + Expect(evt.Value.String()).To(Equal(EthToWei(1).String())) + Expect(evt.Data).To(Equal(common.Hex2Bytes(""))) + Expect(evt.ReturnData).To(Equal(common.Hex2Bytes(""))) + evt = it.Event + Expect(it.Next()).To(BeFalse()) + a, err := abi.JSON(strings.NewReader(WALLET_ABI)) + Expect(err).ToNot(HaveOccurred()) + data, err := a.Pack("transfer", RandomAccount.Address(), ERC20Contract1Address, EthToWei(1)) + Expect(evt.Destination).To(Equal(WalletProxyAddress)) + Expect(evt.Value.String()).To(Equal("0")) + Expect(evt.Data).To(Equal(data)) + Expect(evt.ReturnData).To(Equal(common.Hex2Bytes(""))) + }) + + It("should decrease the wallet's ETH balance ", func() { + b, err := Backend.BalanceAt(context.Background(), WalletProxyAddress, nil) + Expect(err).ToNot(HaveOccurred()) + Expect(b.String()).To(Equal(EthToWei(3).String())) + }) + + It("should decrease TKN balance of the wallet", func() { + b, err := ERC20Contract1.BalanceOf(nil, WalletProxyAddress) + Expect(err).ToNot(HaveOccurred()) + Expect(b.String()).To(Equal("0")) + }) + + It("should reset privileged back to false", func() { + p, err := WalletProxy.Privileged(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(p).To(BeFalse()) + }) + + It("should fail when trying to replay", func() { + a, err := abi.JSON(strings.NewReader(WALLET_ABI)) + Expect(err).ToNot(HaveOccurred()) + data, err := a.Pack("transfer", RandomAccount.Address(), common.HexToAddress("0x0"), EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) + + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + + nonce := big.NewInt(0) + chainId := big.NewInt(1337) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, Owner.PrivKey()) + Expect(err).ToNot(HaveOccurred()) + + tx, err := WalletProxy.ExecutePrivilegedRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(500000)), nonce, batch, signature) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("tx replay")) + }) + + It("should succeed when increasing the nonce", func() { + a, err := abi.JSON(strings.NewReader(WALLET_ABI)) + Expect(err).ToNot(HaveOccurred()) + data, err := a.Pack("transfer", RandomAccount.Address(), common.HexToAddress("0x0"), EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) + + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + + nonce := big.NewInt(1) + chainId := big.NewInt(1337) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, Owner.PrivKey()) + Expect(err).ToNot(HaveOccurred()) + + tx, err := WalletProxy.ExecutePrivilegedRelayedTransaction(Controller.TransactOpts(), nonce, batch, signature) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + }) + + When("the the non-privileged mode is used each one of them fails separately due to having exceeded the limit ", func() { + It("should fail when transfering 1 ETH (>100$)", func() { + // send value (1 ETH) > 100$ + data := []byte(fmt.Sprintf("%s%s%s", RandomAccount.Address(), abi.U256(EthToWei(1)), abi.U256(big.NewInt(0)))) + + nonce := big.NewInt(0) + chainId := big.NewInt(1337) + signature, err := SignData(chainId, WalletProxyAddress, nonce, data, Owner.PrivKey()) + Expect(err).ToNot(HaveOccurred()) + + tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(200000)), nonce, data, signature) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("available100$)", func() { + // use wallet's ERC20 transfer to transfer the token + a, err := abi.JSON(strings.NewReader(WALLET_ABI)) + Expect(err).ToNot(HaveOccurred()) + data, err := a.Pack("transfer", RandomAccount.Address(), ERC20Contract1Address, EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) + data = []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + + nonce := big.NewInt(0) + chainId := big.NewInt(1337) + signature, err := SignData(chainId, WalletProxyAddress, nonce, data, Owner.PrivKey()) + Expect(err).ToNot(HaveOccurred()) + + tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(200000)), nonce, data, signature) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("available Date: Thu, 3 Dec 2020 13:21:28 +0100 Subject: [PATCH 50/66] update packages --- pkg/bindings/controller.go | 2 +- pkg/bindings/gasProxy.go | 2 +- pkg/bindings/holder.go | 2 +- pkg/bindings/licence.go | 2 +- .../mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/mocks/wallet.go | 2 +- pkg/bindings/oracle.go | 2 +- pkg/bindings/tokenWhitelist.go | 2 +- pkg/bindings/wallet.go | 64 ++++++++++++++++--- pkg/bindings/walletCache.go | 2 +- pkg/bindings/walletDeployer.go | 2 +- 11 files changed, 66 insertions(+), 18 deletions(-) diff --git a/pkg/bindings/controller.go b/pkg/bindings/controller.go index d387608f..dd707155 100644 --- a/pkg/bindings/controller.go +++ b/pkg/bindings/controller.go @@ -31,7 +31,7 @@ var ( const ControllerABI = "[{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_ownerAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"AddedAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"name\":\"AddedController\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"RemovedAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"name\":\"RemovedController\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"Started\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"Stopped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isStopped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"removeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"start\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stop\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // ControllerBin is the compiled bytecode used for deploying new contracts. -var ControllerBin = "0x60806040523480156200001157600080fd5b506040516200178f3803806200178f833981810160405260208110156200003757600080fd5b5051620000468160006200004d565b50620001bc565b600054610100900460ff168062000069575062000069620001b6565b8062000078575060005460ff16155b620000b55760405162461bcd60e51b815260040180806020018281038252602e81526020018062001761602e913960400191505060405180910390fd5b600054610100900460ff16158015620000e1576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff9104166200015a57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015620001b1576000805461ff00191690555b505050565b303b1590565b61159580620001cc6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103e9565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f9565b61011761046c565b610157610472565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047b565b61010d610526565b6101d7610621565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610630565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b0316610736565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610805565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bc565b61010d610a2f565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610abe565b6102da33610b3b565b806102f457503360009081526034602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6038805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60375490565b61039633610b3b565b6103dd576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6103e681610b4f565b50565b603354600160a01b900460ff1690565b6000610403610472565b1561044d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526034602052604090205460ff1690565b60355490565b60385460ff1690565b61048433610b3b565b6104cb576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6104d3610472565b1561051d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610c25565b61052f33610b3b565b610576576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166105d4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603380546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b3360009081526034602052604090205460ff1661068a576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b610692610472565b156106dc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106e7838383610dcd565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61073f33610b3b565b8061075957503360009081526034602052604090205460ff165b6107aa576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107b2610472565b156107fc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610e0c565b61080e33610b3b565b610855576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166108b3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f85760405162461bcd60e51b81526004018080602001828103825260238152602001806114c76023913960400191505060405180910390fd5b6033805460ff60a01b1916600160a01b831515021790558061095157604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603354604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603380546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c6610472565b15610a10576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526036602052604090205460ff1690565b610a3833610b3b565b610a7f576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6038805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ac733610b3b565b80610ae157503360009081526034602052604090205460ff165b610b32576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e681610fb4565b6033546001600160a01b0390811691161490565b6001600160a01b03811660009081526034602052604090205460ff16610bbc576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260346020908152604091829020805460ff191690556035805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526034602052604090205460ff1615610c7d5760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610cd55760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610cde81610b3b565b15610d1a5760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610d5f5760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260346020908152604091829020805460ff1916600190811790915560358054909101905581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610df357610dee6001600160a01b03841682611074565b610e07565b610e076001600160a01b0383168483611159565b505050565b6001600160a01b03811660009081526034602052604090205460ff1615610e645760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610ebc5760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610ec581610b3b565b15610f015760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610f465760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff1916600190811790915560378054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526036602052604090205460ff1661100b5760405162461bcd60e51b81526004018080602001828103825260248152602001806114a36024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff191690556037805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b804710156110c9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611114576040519150601f19603f3d011682016040523d82523d6000602084013e611119565b606091505b5050905080610e075760405162461bcd60e51b815260040180806020018281038252603a815260200180611469603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e0790849060606111fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112579092919063ffffffff16565b805190915015610e075780806020019051602081101561121a57600080fd5b5051610e075760405162461bcd60e51b815260040180806020018281038252602a81526020018061150e602a913960400191505060405180910390fd5b6060611266848460008561126e565b949350505050565b606061127985611419565b6112ca576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106113095780518252601f1990920191602091820191016112ea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461136b576040519150601f19603f3d011682016040523d82523d6000602084013e611370565b606091505b509150915081156113845791506112669050565b8051156113945780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113de5781810151838201526020016113c6565b50505050905090810190601f16801561140b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656470726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a2646970667358221220946c70690756fda725de0e461a7d0c97a52556112344e80ee0295fbdf4e4e9c964736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var ControllerBin = "0x60806040523480156200001157600080fd5b506040516200178f3803806200178f833981810160405260208110156200003757600080fd5b5051620000468160006200004d565b50620001bc565b600054610100900460ff168062000069575062000069620001b6565b8062000078575060005460ff16155b620000b55760405162461bcd60e51b815260040180806020018281038252602e81526020018062001761602e913960400191505060405180910390fd5b600054610100900460ff16158015620000e1576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff9104166200015a57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015620001b1576000805461ff00191690555b505050565b303b1590565b61159580620001cc6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103e9565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f9565b61011761046c565b610157610472565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047b565b61010d610526565b6101d7610621565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610630565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b0316610736565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610805565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bc565b61010d610a2f565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610abe565b6102da33610b3b565b806102f457503360009081526034602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6038805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60375490565b61039633610b3b565b6103dd576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6103e681610b4f565b50565b603354600160a01b900460ff1690565b6000610403610472565b1561044d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526034602052604090205460ff1690565b60355490565b60385460ff1690565b61048433610b3b565b6104cb576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6104d3610472565b1561051d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610c25565b61052f33610b3b565b610576576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166105d4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603380546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b3360009081526034602052604090205460ff1661068a576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b610692610472565b156106dc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106e7838383610dcd565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61073f33610b3b565b8061075957503360009081526034602052604090205460ff165b6107aa576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107b2610472565b156107fc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610e0c565b61080e33610b3b565b610855576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166108b3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f85760405162461bcd60e51b81526004018080602001828103825260238152602001806114c76023913960400191505060405180910390fd5b6033805460ff60a01b1916600160a01b831515021790558061095157604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603354604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603380546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c6610472565b15610a10576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526036602052604090205460ff1690565b610a3833610b3b565b610a7f576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6038805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ac733610b3b565b80610ae157503360009081526034602052604090205460ff165b610b32576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e681610fb4565b6033546001600160a01b0390811691161490565b6001600160a01b03811660009081526034602052604090205460ff16610bbc576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260346020908152604091829020805460ff191690556035805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526034602052604090205460ff1615610c7d5760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610cd55760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610cde81610b3b565b15610d1a5760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610d5f5760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260346020908152604091829020805460ff1916600190811790915560358054909101905581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610df357610dee6001600160a01b03841682611074565b610e07565b610e076001600160a01b0383168483611159565b505050565b6001600160a01b03811660009081526034602052604090205460ff1615610e645760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610ebc5760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610ec581610b3b565b15610f015760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610f465760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff1916600190811790915560378054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526036602052604090205460ff1661100b5760405162461bcd60e51b81526004018080602001828103825260248152602001806114a36024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff191690556037805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b804710156110c9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611114576040519150601f19603f3d011682016040523d82523d6000602084013e611119565b606091505b5050905080610e075760405162461bcd60e51b815260040180806020018281038252603a815260200180611469603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e0790849060606111fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112579092919063ffffffff16565b805190915015610e075780806020019051602081101561121a57600080fd5b5051610e075760405162461bcd60e51b815260040180806020018281038252602a81526020018061150e602a913960400191505060405180910390fd5b6060611266848460008561126e565b949350505050565b606061127985611419565b6112ca576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106113095780518252601f1990920191602091820191016112ea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461136b576040519150601f19603f3d011682016040523d82523d6000602084013e611370565b606091505b509150915081156113845791506112669050565b8051156113945780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113de5781810151838201526020016113c6565b50505050905090810190601f16801561140b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656470726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a2646970667358221220693dc9c589f95652d34f6e53547734d97b459fdeb235191cb376d3f7e39760d764736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployController deploys a new Ethereum contract, binding an instance of Controller to it. func DeployController(auth *bind.TransactOpts, backend bind.ContractBackend, _ownerAddress_ common.Address) (common.Address, *types.Transaction, *Controller, error) { diff --git a/pkg/bindings/gasProxy.go b/pkg/bindings/gasProxy.go index 8efc4a59..6081a3a9 100644 --- a/pkg/bindings/gasProxy.go +++ b/pkg/bindings/gasProxy.go @@ -37,7 +37,7 @@ type GasRefundableGasTokenParameters struct { const GasProxyABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"freeCallGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasRefundPerUnit\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structGasRefundable.GasTokenParameters\",\"name\":\"_gasTokenParameters\",\"type\":\"tuple\"}],\"name\":\"SetGasToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenParameters\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"freeCallGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasRefundPerUnit\",\"type\":\"uint256\"}],\"internalType\":\"structGasRefundable.GasTokenParameters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"freeCallGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasRefundPerUnit\",\"type\":\"uint256\"}],\"internalType\":\"structGasRefundable.GasTokenParameters\",\"name\":\"_parameters\",\"type\":\"tuple\"}],\"name\":\"setGasToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // GasProxyBin is the compiled bytecode used for deploying new contracts. -var GasProxyBin = "0x603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697603455603580549091166d4946c0e9f43f4dee607b0ef1fa1c17905560c060405261374a608081905261a0aa60a08190526036919091556037553480156200008b57600080fd5b5060405162000d4338038062000d43833981016040819052620000ae916200022c565b620000b982620000cc565b620000c4816200018e565b5050620002b4565b600054610100900460ff1680620000e85750620000e862000226565b80620000f7575060005460ff16155b6200011f5760405162461bcd60e51b8152600401620001169062000266565b60405180910390fd5b600054610100900460ff161580156200014b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200017757603380546001600160a01b0319166001600160a01b0384161790555b80156200018a576000805461ff00191690555b5050565b600054610100900460ff1680620001aa5750620001aa62000226565b80620001b9575060005460ff16155b620001d85760405162461bcd60e51b8152600401620001169062000266565b600054610100900460ff1615801562000204576000805460ff1961ff0019909116610100171660011790555b81156200017757603482905580156200018a576000805461ff00191690555050565b303b1590565b600080604083850312156200023f578182fd5b82516001600160a01b038116811462000256578283fd5b6020939093015192949293505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b610a7f80620002c46000396000f3fe6080604052600436106100555760003560e01c80633686ba421461005a5780633f579f4214610085578063719d5c6f146100a55780637d73b231146100c7578063c91d59fe146100e9578063e2b4ce97146100fe575b600080fd5b34801561006657600080fd5b5061006f610120565b60405161007c9190610a23565b60405180910390f35b610098610093366004610698565b610143565b60405161007c91906108a2565b3480156100b157600080fd5b506100c56100c0366004610659565b610300565b005b3480156100d357600080fd5b506100dc610341565b60405161007c9190610808565b3480156100f557600080fd5b506100dc610350565b34801561010a57600080fd5b5061011361035f565b60405161007c9190610899565b61012861061c565b50604080518082019091526036548152603754602082015290565b606061014e33610365565b6101735760405162461bcd60e51b815260040161016a906109ec565b60405180910390fd5b60005a905060006060876001600160a01b03168787876040516101979291906107f8565b60006040518083038185875af1925050503d80600081146101d4576040519150601f19603f3d011682016040523d82523d6000602084013e6101d9565b606091505b5091509150816101fb5760405162461bcd60e51b815260040161016a906109be565b7ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138888888885604051610232959493929190610839565b60405180910390a19250506000601036025a836152080103019050603560009054906101000a90046001600160a01b03166001600160a01b0316636366b93660366001015460366000015484018161028657fe5b046040518263ffffffff1660e01b81526004016102a39190610899565b602060405180830381600087803b1580156102bd57600080fd5b505af11580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610786565b505050949350505050565b610309336103f3565b6103255760405162461bcd60e51b815260040161016a90610923565b61033d826103383684900384018461073c565b61042b565b5050565b6033546001600160a01b031690565b6035546001600160a01b031690565b60345490565b60006103726034546104f6565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040161039d9190610808565b60206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed919061071c565b92915050565b60006104006034546104f6565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040161039d9190610808565b6001600160a01b0382166104515760405162461bcd60e51b815260040161016a90610950565b805161046f5760405162461bcd60e51b815260040161016a90610987565b60208101516104905760405162461bcd60e51b815260040161016a906108ec565b603580546001600160a01b0319166001600160a01b038416179055805160365560208101516037556040517fd82ec20581833e6b763037b2f1082d6b9c2ba3e8dbaaf4aab4c2b4c49d99fbb5906104ea908490849061081c565b60405180910390a15050565b6033546000906001600160a01b03166105215760405162461bcd60e51b815260040161016a906108b5565b603354604051630178b8bf60e01b81526001600160a01b0390911690630178b8bf90610551908590600401610899565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190610636565b6001600160a01b0316633b3b57de836040518263ffffffff1660e01b81526004016105cc9190610899565b60206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610636565b604051806040016040528060008152602001600081525090565b600060208284031215610647578081fd5b815161065281610a31565b9392505050565b600080828403606081121561066c578182fd5b833561067781610a31565b92506040601f198201121561068a578182fd5b506020830190509250929050565b600080600080606085870312156106ad578182fd5b84356106b881610a31565b935060208501359250604085013567ffffffffffffffff808211156106db578384fd5b818701915087601f8301126106ee578384fd5b8135818111156106fc578485fd5b88602082850101111561070d578485fd5b95989497505060200194505050565b60006020828403121561072d578081fd5b81518015158114610652578182fd5b60006040828403121561074d578081fd5b6040516040810181811067ffffffffffffffff8211171561076c578283fd5b604052823581526020928301359281019290925250919050565b600060208284031215610797578081fd5b5051919050565b60008151808452815b818110156107c3576020818501810151868301820152016107a7565b818111156107d45782602083870101525b50601f01601f19169290920160200192915050565b80518252602090810151910152565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b03831681526060810161065260208301846107e9565b6001600160a01b03861681526020810185905260806040820181905281018390526000838560a08401378060a08584010152601f19601f850116820160a083820301606084015261088d60a082018561079e565b98975050505050505050565b90815260200190565b600060208252610652602083018461079e565b6020808252601d908201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604082015260600190565b60208082526018908201527f67617320726566756e642070657220756e697420697320300000000000000000604082015260600190565b60208082526013908201527239b2b73232b91034b9903737ba1030b236b4b760691b604082015260600190565b60208082526018908201527f67617320746f6b656e2061646472657373206973203078300000000000000000604082015260600190565b60208082526017908201527f667265652063616c6c2067617320636f73742069732030000000000000000000604082015260600190565b602080825260149082015273195e1d195c9b985b0818d85b1b0819985a5b195960621b604082015260600190565b60208082526018908201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604082015260600190565b604081016103ed82846107e9565b6001600160a01b0381168114610a4657600080fd5b5056fea26469706673582212202be31d3f9cbcf7e335580bd7c94a840b927f1a585e66c796ba749fb172cfd8d364736f6c634300060c0033" +var GasProxyBin = "0x603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697603455603580549091166d4946c0e9f43f4dee607b0ef1fa1c17905560c060405261374a608081905261a0aa60a08190526036919091556037553480156200008b57600080fd5b5060405162000d4338038062000d43833981016040819052620000ae916200022c565b620000b982620000cc565b620000c4816200018e565b5050620002b4565b600054610100900460ff1680620000e85750620000e862000226565b80620000f7575060005460ff16155b6200011f5760405162461bcd60e51b8152600401620001169062000266565b60405180910390fd5b600054610100900460ff161580156200014b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200017757603380546001600160a01b0319166001600160a01b0384161790555b80156200018a576000805461ff00191690555b5050565b600054610100900460ff1680620001aa5750620001aa62000226565b80620001b9575060005460ff16155b620001d85760405162461bcd60e51b8152600401620001169062000266565b600054610100900460ff1615801562000204576000805460ff1961ff0019909116610100171660011790555b81156200017757603482905580156200018a576000805461ff00191690555050565b303b1590565b600080604083850312156200023f578182fd5b82516001600160a01b038116811462000256578283fd5b6020939093015192949293505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b610a7f80620002c46000396000f3fe6080604052600436106100555760003560e01c80633686ba421461005a5780633f579f4214610085578063719d5c6f146100a55780637d73b231146100c7578063c91d59fe146100e9578063e2b4ce97146100fe575b600080fd5b34801561006657600080fd5b5061006f610120565b60405161007c9190610a23565b60405180910390f35b610098610093366004610698565b610143565b60405161007c91906108a2565b3480156100b157600080fd5b506100c56100c0366004610659565b610300565b005b3480156100d357600080fd5b506100dc610341565b60405161007c9190610808565b3480156100f557600080fd5b506100dc610350565b34801561010a57600080fd5b5061011361035f565b60405161007c9190610899565b61012861061c565b50604080518082019091526036548152603754602082015290565b606061014e33610365565b6101735760405162461bcd60e51b815260040161016a906109ec565b60405180910390fd5b60005a905060006060876001600160a01b03168787876040516101979291906107f8565b60006040518083038185875af1925050503d80600081146101d4576040519150601f19603f3d011682016040523d82523d6000602084013e6101d9565b606091505b5091509150816101fb5760405162461bcd60e51b815260040161016a906109be565b7ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138888888885604051610232959493929190610839565b60405180910390a19250506000601036025a836152080103019050603560009054906101000a90046001600160a01b03166001600160a01b0316636366b93660366001015460366000015484018161028657fe5b046040518263ffffffff1660e01b81526004016102a39190610899565b602060405180830381600087803b1580156102bd57600080fd5b505af11580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610786565b505050949350505050565b610309336103f3565b6103255760405162461bcd60e51b815260040161016a90610923565b61033d826103383684900384018461073c565b61042b565b5050565b6033546001600160a01b031690565b6035546001600160a01b031690565b60345490565b60006103726034546104f6565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040161039d9190610808565b60206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed919061071c565b92915050565b60006104006034546104f6565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040161039d9190610808565b6001600160a01b0382166104515760405162461bcd60e51b815260040161016a90610950565b805161046f5760405162461bcd60e51b815260040161016a90610987565b60208101516104905760405162461bcd60e51b815260040161016a906108ec565b603580546001600160a01b0319166001600160a01b038416179055805160365560208101516037556040517fd82ec20581833e6b763037b2f1082d6b9c2ba3e8dbaaf4aab4c2b4c49d99fbb5906104ea908490849061081c565b60405180910390a15050565b6033546000906001600160a01b03166105215760405162461bcd60e51b815260040161016a906108b5565b603354604051630178b8bf60e01b81526001600160a01b0390911690630178b8bf90610551908590600401610899565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190610636565b6001600160a01b0316633b3b57de836040518263ffffffff1660e01b81526004016105cc9190610899565b60206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610636565b604051806040016040528060008152602001600081525090565b600060208284031215610647578081fd5b815161065281610a31565b9392505050565b600080828403606081121561066c578182fd5b833561067781610a31565b92506040601f198201121561068a578182fd5b506020830190509250929050565b600080600080606085870312156106ad578182fd5b84356106b881610a31565b935060208501359250604085013567ffffffffffffffff808211156106db578384fd5b818701915087601f8301126106ee578384fd5b8135818111156106fc578485fd5b88602082850101111561070d578485fd5b95989497505060200194505050565b60006020828403121561072d578081fd5b81518015158114610652578182fd5b60006040828403121561074d578081fd5b6040516040810181811067ffffffffffffffff8211171561076c578283fd5b604052823581526020928301359281019290925250919050565b600060208284031215610797578081fd5b5051919050565b60008151808452815b818110156107c3576020818501810151868301820152016107a7565b818111156107d45782602083870101525b50601f01601f19169290920160200192915050565b80518252602090810151910152565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b03831681526060810161065260208301846107e9565b6001600160a01b03861681526020810185905260806040820181905281018390526000838560a08401378060a08584010152601f19601f850116820160a083820301606084015261088d60a082018561079e565b98975050505050505050565b90815260200190565b600060208252610652602083018461079e565b6020808252601d908201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604082015260600190565b60208082526018908201527f67617320726566756e642070657220756e697420697320300000000000000000604082015260600190565b60208082526013908201527239b2b73232b91034b9903737ba1030b236b4b760691b604082015260600190565b60208082526018908201527f67617320746f6b656e2061646472657373206973203078300000000000000000604082015260600190565b60208082526017908201527f667265652063616c6c2067617320636f73742069732030000000000000000000604082015260600190565b602080825260149082015273195e1d195c9b985b0818d85b1b0819985a5b195960621b604082015260600190565b60208082526018908201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604082015260600190565b604081016103ed82846107e9565b6001600160a01b0381168114610a4657600080fd5b5056fea2646970667358221220b77ebe0cde00777ca491cec97f593182f18ee9337b03641ca178c43dc62da9df64736f6c634300060c0033" // DeployGasProxy deploys a new Ethereum contract, binding an instance of GasProxy to it. func DeployGasProxy(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *GasProxy, error) { diff --git a/pkg/bindings/holder.go b/pkg/bindings/holder.go index 4b69a48c..328db516 100644 --- a/pkg/bindings/holder.go +++ b/pkg/bindings/holder.go @@ -31,7 +31,7 @@ var ( const HolderABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_burnerContract_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"CashAndBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_nonRedeemableAddresses\",\"type\":\"address[]\"}],\"name\":\"nonRedeemableTokenClaim\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" // HolderBin is the compiled bytecode used for deploying new contracts. -var HolderBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b50604051620014593803806200145983398181016040526080811015620000a057600080fd5b5080516020820151604083015160609093015191929091620000c28362000102565b620000cd81620001d9565b620000d8826200028f565b5050603680546001600160a01b0319166001600160a01b039390931692909217909155506200034b565b600054610100900460ff16806200011e57506200011e62000345565b806200012d575060005460ff16155b6200016a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000196576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001c257603380546001600160a01b0319166001600160a01b0384161790555b8015620001d5576000805461ff00191690555b5050565b600054610100900460ff1680620001f55750620001f562000345565b8062000204575060005460ff16155b620002415760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff161580156200026d576000805460ff1961ff0019909116610100171660011790555b8115620001c25760348290558015620001d5576000805461ff00191690555050565b600054610100900460ff1680620002ab5750620002ab62000345565b80620002ba575060005460ff16155b620002f75760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000323576000805460ff1961ff0019909116610100171660011790555b8115620001c25760358290558015620001d5576000805461ff00191690555050565b303b1590565b6110d0806200035b6000396000f3fe6080604052600436106100595760003560e01c806327810b6e1461009f57806340f6a70f146100d05780637d73b23114610171578063877337b0146101865780639dc29fac146101ad578063e2b4ce97146101e65761009a565b3661009a576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b600080fd5b3480156100ab57600080fd5b506100b46101fb565b604080516001600160a01b039092168252519081900360200190f35b3480156100dc57600080fd5b5061015d600480360360408110156100f357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011e57600080fd5b82018360208201111561013057600080fd5b8035906020019184602083028401116401000000008311171561015257600080fd5b50909250905061020a565b604080519115158252519081900360200190f35b34801561017d57600080fd5b506100b46103ba565b34801561019257600080fd5b5061019b6103c9565b60408051918252519081900360200190f35b3480156101b957600080fd5b5061015d600480360360408110156101d057600080fd5b506001600160a01b0381351690602001356103cf565b3480156101f257600080fd5b5061019b6105a9565b6036546001600160a01b031690565b6000610215336105af565b61025c576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b828110156103af5761028b84848381811061027657fe5b905060200201356001600160a01b031661063c565b156102dd576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006103038585848181106102ee57fe5b905060200201356001600160a01b0316610655565b905080156103a6576103318686868581811061031b57fe5b905060200201356001600160a01b0316836106e6565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035f57fe5b905060200201356001600160a01b03168360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a15b5060010161025f565b506001949350505050565b6033546001600160a01b031690565b60355490565b6036546000906001600160a01b0316331461041b5760405162461bcd60e51b815260040180806020018281038252602181526020018061107a6021913960400191505060405180910390fd5b81610428575060016105a3565b60006104ae83603660009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d60208110156104a657600080fd5b505190610725565b905060606104ba610786565b905060005b815181101561059b5760006104e68383815181106104d957fe5b6020026020010151610655565b90508015610592576000610504856104fe848a610899565b906108f2565b90506105248885858151811061051657fe5b6020026020010151836106e6565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061055257fe5b60200260200101518360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104bf565b506001925050505b92915050565b60345490565b60006105bc603454610934565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561060857600080fd5b505afa15801561061c573d6000803e3d6000fd5b505050506040513d602081101561063257600080fd5b505190505b919050565b60008061064883610a55565b5098975050505050505050565b60006001600160a01b038216156106df57604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b50519050610637565b5047610637565b6001600160a01b03821661070c576107076001600160a01b03841682610be0565b610720565b6107206001600160a01b0383168483610cc5565b505050565b60008282018381101561077f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060610793603554610934565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107cb57600080fd5b505afa1580156107df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561080857600080fd5b810190808051604051939291908464010000000082111561082857600080fd5b90830190602082018581111561083d57600080fd5b825186602082028301116401000000008211171561085a57600080fd5b82525081516020918201928201910280838360005b8381101561088757818101518382015260200161086f565b50505050905001604052505050905090565b6000826108a8575060006105a3565b828202828482816108b557fe5b041461077f5760405162461bcd60e51b815260040180806020018281038252602181526020018061102f6021913960400191505060405180910390fd5b600061077f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d17565b6033546000906001600160a01b0316610994576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109e057600080fd5b505afa1580156109f4573d6000803e3d6000fd5b505050506040513d6020811015610a0a57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561060857600080fd5b6060600080600080600080610a6b603554610934565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610af457600080fd5b8101908080516040519392919084640100000000821115610b1457600080fd5b908301906020820185811115610b2957600080fd5b8251640100000000811182820188101715610b4357600080fd5b82525081516020918201929091019080838360005b83811015610b70578181015183820152602001610b58565b50505050905090810190601f168015610b9d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b80471015610c35576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610c80576040519150601f19603f3d011682016040523d82523d6000602084013e610c85565b606091505b50509050806107205760405162461bcd60e51b815260040180806020018281038252603a815260200180610ff5603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610720908490610db9565b60008183610da35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d68578181015183820152602001610d50565b50505050905090810190601f168015610d955780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610daf57fe5b0495945050505050565b6060610e0e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e6a9092919063ffffffff16565b80519091501561072057808060200190516020811015610e2d57600080fd5b50516107205760405162461bcd60e51b815260040180806020018281038252602a815260200180611050602a913960400191505060405180910390fd5b6060610e798484600085610e81565b949350505050565b6060610e8c85610fee565b610edd576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310610f1c5780518252601f199092019160209182019101610efd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f7e576040519150601f19603f3d011682016040523d82523d6000602084013e610f83565b606091505b50915091508115610f97579150610e799050565b805115610fa75780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610d68578181015183820152602001610d50565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a264697066735822122094060d9ec25d495c3977feea989621a67250c18b2becc1c007c573542cedcfeb64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var HolderBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b50604051620014593803806200145983398181016040526080811015620000a057600080fd5b5080516020820151604083015160609093015191929091620000c28362000102565b620000cd81620001d9565b620000d8826200028f565b5050603680546001600160a01b0319166001600160a01b039390931692909217909155506200034b565b600054610100900460ff16806200011e57506200011e62000345565b806200012d575060005460ff16155b6200016a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000196576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001c257603380546001600160a01b0319166001600160a01b0384161790555b8015620001d5576000805461ff00191690555b5050565b600054610100900460ff1680620001f55750620001f562000345565b8062000204575060005460ff16155b620002415760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff161580156200026d576000805460ff1961ff0019909116610100171660011790555b8115620001c25760348290558015620001d5576000805461ff00191690555050565b600054610100900460ff1680620002ab5750620002ab62000345565b80620002ba575060005460ff16155b620002f75760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000323576000805460ff1961ff0019909116610100171660011790555b8115620001c25760358290558015620001d5576000805461ff00191690555050565b303b1590565b6110d0806200035b6000396000f3fe6080604052600436106100595760003560e01c806327810b6e1461009f57806340f6a70f146100d05780637d73b23114610171578063877337b0146101865780639dc29fac146101ad578063e2b4ce97146101e65761009a565b3661009a576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b600080fd5b3480156100ab57600080fd5b506100b46101fb565b604080516001600160a01b039092168252519081900360200190f35b3480156100dc57600080fd5b5061015d600480360360408110156100f357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011e57600080fd5b82018360208201111561013057600080fd5b8035906020019184602083028401116401000000008311171561015257600080fd5b50909250905061020a565b604080519115158252519081900360200190f35b34801561017d57600080fd5b506100b46103ba565b34801561019257600080fd5b5061019b6103c9565b60408051918252519081900360200190f35b3480156101b957600080fd5b5061015d600480360360408110156101d057600080fd5b506001600160a01b0381351690602001356103cf565b3480156101f257600080fd5b5061019b6105a9565b6036546001600160a01b031690565b6000610215336105af565b61025c576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b828110156103af5761028b84848381811061027657fe5b905060200201356001600160a01b031661063c565b156102dd576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006103038585848181106102ee57fe5b905060200201356001600160a01b0316610655565b905080156103a6576103318686868581811061031b57fe5b905060200201356001600160a01b0316836106e6565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035f57fe5b905060200201356001600160a01b03168360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a15b5060010161025f565b506001949350505050565b6033546001600160a01b031690565b60355490565b6036546000906001600160a01b0316331461041b5760405162461bcd60e51b815260040180806020018281038252602181526020018061107a6021913960400191505060405180910390fd5b81610428575060016105a3565b60006104ae83603660009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d60208110156104a657600080fd5b505190610725565b905060606104ba610786565b905060005b815181101561059b5760006104e68383815181106104d957fe5b6020026020010151610655565b90508015610592576000610504856104fe848a610899565b906108f2565b90506105248885858151811061051657fe5b6020026020010151836106e6565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061055257fe5b60200260200101518360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104bf565b506001925050505b92915050565b60345490565b60006105bc603454610934565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561060857600080fd5b505afa15801561061c573d6000803e3d6000fd5b505050506040513d602081101561063257600080fd5b505190505b919050565b60008061064883610a55565b5098975050505050505050565b60006001600160a01b038216156106df57604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b50519050610637565b5047610637565b6001600160a01b03821661070c576107076001600160a01b03841682610be0565b610720565b6107206001600160a01b0383168483610cc5565b505050565b60008282018381101561077f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060610793603554610934565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107cb57600080fd5b505afa1580156107df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561080857600080fd5b810190808051604051939291908464010000000082111561082857600080fd5b90830190602082018581111561083d57600080fd5b825186602082028301116401000000008211171561085a57600080fd5b82525081516020918201928201910280838360005b8381101561088757818101518382015260200161086f565b50505050905001604052505050905090565b6000826108a8575060006105a3565b828202828482816108b557fe5b041461077f5760405162461bcd60e51b815260040180806020018281038252602181526020018061102f6021913960400191505060405180910390fd5b600061077f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d17565b6033546000906001600160a01b0316610994576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109e057600080fd5b505afa1580156109f4573d6000803e3d6000fd5b505050506040513d6020811015610a0a57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561060857600080fd5b6060600080600080600080610a6b603554610934565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610af457600080fd5b8101908080516040519392919084640100000000821115610b1457600080fd5b908301906020820185811115610b2957600080fd5b8251640100000000811182820188101715610b4357600080fd5b82525081516020918201929091019080838360005b83811015610b70578181015183820152602001610b58565b50505050905090810190601f168015610b9d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b80471015610c35576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610c80576040519150601f19603f3d011682016040523d82523d6000602084013e610c85565b606091505b50509050806107205760405162461bcd60e51b815260040180806020018281038252603a815260200180610ff5603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610720908490610db9565b60008183610da35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d68578181015183820152602001610d50565b50505050905090810190601f168015610d955780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610daf57fe5b0495945050505050565b6060610e0e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e6a9092919063ffffffff16565b80519091501561072057808060200190516020811015610e2d57600080fd5b50516107205760405162461bcd60e51b815260040180806020018281038252602a815260200180611050602a913960400191505060405180910390fd5b6060610e798484600085610e81565b949350505050565b6060610e8c85610fee565b610edd576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310610f1c5780518252601f199092019160209182019101610efd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f7e576040519150601f19603f3d011682016040523d82523d6000602084013e610f83565b606091505b50915091508115610f97579150610e799050565b805115610fa75780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610d68578181015183820152602001610d50565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a2646970667358221220d39049785a5ba6ea78fd47fe833c9b7d6de97e32a6ddc27f95ab1a420f86253364736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployHolder deploys a new Ethereum contract, binding an instance of Holder to it. func DeployHolder(auth *bind.TransactOpts, backend bind.ContractBackend, _burnerContract_ common.Address, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Holder, error) { diff --git a/pkg/bindings/licence.go b/pkg/bindings/licence.go index 53b7a328..56ad640d 100644 --- a/pkg/bindings/licence.go +++ b/pkg/bindings/licence.go @@ -31,7 +31,7 @@ var ( const LicenceABI = "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_licence_\",\"type\":\"uint256\"},{\"internalType\":\"addresspayable\",\"name\":\"_float_\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_holder_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tknAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TransferredToCryptoFloat\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TransferredToTokenHolder\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newFloat\",\"type\":\"address\"}],\"name\":\"UpdatedCryptoFloat\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newAmount\",\"type\":\"uint256\"}],\"name\":\"UpdatedLicenceAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newDAO\",\"type\":\"address\"}],\"name\":\"UpdatedLicenceDAO\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newTKN\",\"type\":\"address\"}],\"name\":\"UpdatedTKNContractAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newHolder\",\"type\":\"address\"}],\"name\":\"UpdatedTokenHolder\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_AMOUNT_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_AMOUNT_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cryptoFloat\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"floatLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"holderLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceAmountScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceDAO\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceDAOLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"load\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockFloat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockHolder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockLicenceDAO\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockTKNContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tknContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tknContractAddressLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenHolder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_newFloat\",\"type\":\"address\"}],\"name\":\"updateFloat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_newHolder\",\"type\":\"address\"}],\"name\":\"updateHolder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newAmount\",\"type\":\"uint256\"}],\"name\":\"updateLicenceAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newDAO\",\"type\":\"address\"}],\"name\":\"updateLicenceDAO\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newTKN\",\"type\":\"address\"}],\"name\":\"updateTKNContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" // LicenceBin is the compiled bytecode used for deploying new contracts. -var LicenceBin = "0x6080604052603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034556035805490911673aaaf91d9b90df800df4f55c205fd6989c977e73a1790553480156200007857600080fd5b50604051620019e8380380620019e8833981810160405260c08110156200009e57600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909160018610801590620000d757506103e88611155b62000129576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6200013482620001a2565b6200013f8162000279565b6039869055603680546001600160a01b038088166001600160a01b0319928316179092556037805487841692169190911790558316156200019657603580546001600160a01b0319166001600160a01b0385161790555b50505050505062000335565b600054610100900460ff1680620001be5750620001be6200032f565b80620001cd575060005460ff16155b6200020a5760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff1615801562000236576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200026257603380546001600160a01b0319166001600160a01b0384161790555b801562000275576000805461ff00191690555b5050565b600054610100900460ff1680620002955750620002956200032f565b80620002a4575060005460ff16155b620002e15760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff161580156200030d576000805460ff1961ff0019909116610100171660011790555b811562000262576034829055801562000275576000805461ff00191690555050565b303b1590565b61167580620003456000396000f3fe60806040526004361061014f5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd67146103af578063d1696b16146103e2578063e2b4ce97146103f7578063e30c5fa81461040c578063e3d8024214610421578063f15ff4551461045457610156565b8063996cba681461030357806399a5e1d014610346578063a036ba601461035b578063ac904c6314610370578063ca0e2e2014610385578063d08b4ecc1461039a57610156565b806342719faa1161010857806342719faa1461023e5780634ac22b3c1461027157806368ce74e7146102865780637d73b231146102b0578063837c70ef146102c5578063940b9c3b146102ee57610156565b80630bf25c911461015b5780630d42e82f146101725780631b3c96b4146101a55780633a7afe02146101d15780633acec15f14610202578063420a83e71461022957610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610469565b005b34801561017e57600080fd5b506101706004803603602081101561019557600080fd5b50356001600160a01b03166104c6565b610170600480360360408110156101bb57600080fd5b506001600160a01b0381351690602001356105ac565b3480156101dd57600080fd5b506101e66107de565b604080516001600160a01b039092168252519081900360200190f35b34801561020e57600080fd5b506102176107ed565b60408051918252519081900360200190f35b34801561023557600080fd5b506101e66107f2565b34801561024a57600080fd5b506101706004803603602081101561026157600080fd5b50356001600160a01b0316610801565b34801561027d57600080fd5b506101706108f7565b34801561029257600080fd5b50610170600480360360208110156102a957600080fd5b5035610954565b3480156102bc57600080fd5b506101e6610a52565b3480156102d157600080fd5b506102da610a61565b604080519115158252519081900360200190f35b3480156102fa57600080fd5b506102da610a71565b34801561030f57600080fd5b506101706004803603606081101561032657600080fd5b506001600160a01b03813581169160208101359091169060400135610a81565b34801561035257600080fd5b506101e6610b23565b34801561036757600080fd5b506101e6610b32565b34801561037c57600080fd5b50610217610b41565b34801561039157600080fd5b50610217610b47565b3480156103a657600080fd5b50610170610b4d565b3480156103bb57600080fd5b50610170600480360360208110156103d257600080fd5b50356001600160a01b0316610baa565b3480156103ee57600080fd5b50610170610c92565b34801561040357600080fd5b50610217610cef565b34801561041857600080fd5b506102da610cf5565b34801561042d57600080fd5b506101706004803603602081101561044457600080fd5b50356001600160a01b0316610d05565b34801561046057600080fd5b506102da610deb565b61047233610dfb565b6104b1576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b81b1916600160b81b179055565b6104cf33610dfb565b61050e576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610516610a61565b15610558576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60355481906001600160a01b03848116911614156105e5576036546105e0906001600160a01b038581169133911684610e86565b610786565b61060a6103e8603954016106046103e885610ee690919063ffffffff16565b90610f48565b905060006106188383610f8a565b90506001600160a01b0384161561066657603754610645906001600160a01b038681169133911684610e86565b603654610661906001600160a01b038681169133911685610e86565b610731565b8234146106ba576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6037546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156106f4573d6000803e3d6000fd5b506036546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561072f573d6000803e3d6000fd5b505b603754604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b603654604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6038546001600160a01b031690565b600181565b6037546001600160a01b031690565b61080a33610dfb565b610849576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610851610deb565b156108a3576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b603780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090033610dfb565b61093f576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b01b1916600160b01b179055565b6038546001600160a01b031633146109b3576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109c657506103e88111155b610a17576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60398190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6033546001600160a01b031690565b603854600160b81b900460ff1690565b603854600160a01b900460ff1690565b610a8a33610dfb565b610ac9576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610ad4838383610fcc565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6035546001600160a01b031690565b6036546001600160a01b031690565b60395490565b6103e881565b610b5633610dfb565b610b95576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a01b1916600160a01b179055565b610bb333610dfb565b610bf2576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610bfa610a71565b15610c3e576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b603680546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610c9b33610dfb565b610cda576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a81b1916600160a81b179055565b60345490565b603854600160b01b900460ff1690565b610d0e33610dfb565b610d4d576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610d55610cf5565b15610d97576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b603854600160a81b900460ff1690565b6000610e0860345461100b565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e5457600080fd5b505afa158015610e68573d6000803e3d6000fd5b505050506040513d6020811015610e7e57600080fd5b505192915050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ee090859061112c565b50505050565b600082610ef557506000610f42565b82820282848281610f0257fe5b0414610f3f5760405162461bcd60e51b81526004018080602001828103825260218152602001806115d56021913960400191505060405180910390fd5b90505b92915050565b6000610f3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111dd565b6000610f3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061127f565b6001600160a01b038216610ff257610fed6001600160a01b038416826112d9565b611006565b6110066001600160a01b03831684836113be565b505050565b6033546000906001600160a01b031661106b576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110b757600080fd5b505afa1580156110cb573d6000803e3d6000fd5b505050506040513d60208110156110e157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e5457600080fd5b6060611181826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114109092919063ffffffff16565b805190915015611006578080602001905160208110156111a057600080fd5b50516110065760405162461bcd60e51b815260040180806020018281038252602a815260200180611616602a913960400191505060405180910390fd5b600081836112695760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578181015183820152602001611216565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161127557fe5b0495945050505050565b600081848411156112d15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561122e578181015183820152602001611216565b505050900390565b8047101561132e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611379576040519150601f19603f3d011682016040523d82523d6000602084013e61137e565b606091505b50509050806110065760405162461bcd60e51b815260040180806020018281038252603a81526020018061159b603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261100690849061112c565b606061141f8484600085611427565b949350505050565b606061143285611594565b611483576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106114c25780518252601f1990920191602091820191016114a3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611524576040519150601f19603f3d011682016040523d82523d6000602084013e611529565b606091505b5091509150811561153d57915061141f9050565b80511561154d5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561122e578181015183820152602001611216565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7773656e646572206973206e6f742061646d696e000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220bab9bf47e97a81674b366e27bf5b270027d593b71446c30054edb101d0e06bad64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var LicenceBin = "0x6080604052603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034556035805490911673aaaf91d9b90df800df4f55c205fd6989c977e73a1790553480156200007857600080fd5b50604051620019e8380380620019e8833981810160405260c08110156200009e57600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909160018610801590620000d757506103e88611155b62000129576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6200013482620001a2565b6200013f8162000279565b6039869055603680546001600160a01b038088166001600160a01b0319928316179092556037805487841692169190911790558316156200019657603580546001600160a01b0319166001600160a01b0385161790555b50505050505062000335565b600054610100900460ff1680620001be5750620001be6200032f565b80620001cd575060005460ff16155b6200020a5760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff1615801562000236576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200026257603380546001600160a01b0319166001600160a01b0384161790555b801562000275576000805461ff00191690555b5050565b600054610100900460ff1680620002955750620002956200032f565b80620002a4575060005460ff16155b620002e15760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff161580156200030d576000805460ff1961ff0019909116610100171660011790555b811562000262576034829055801562000275576000805461ff00191690555050565b303b1590565b61167580620003456000396000f3fe60806040526004361061014f5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd67146103af578063d1696b16146103e2578063e2b4ce97146103f7578063e30c5fa81461040c578063e3d8024214610421578063f15ff4551461045457610156565b8063996cba681461030357806399a5e1d014610346578063a036ba601461035b578063ac904c6314610370578063ca0e2e2014610385578063d08b4ecc1461039a57610156565b806342719faa1161010857806342719faa1461023e5780634ac22b3c1461027157806368ce74e7146102865780637d73b231146102b0578063837c70ef146102c5578063940b9c3b146102ee57610156565b80630bf25c911461015b5780630d42e82f146101725780631b3c96b4146101a55780633a7afe02146101d15780633acec15f14610202578063420a83e71461022957610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610469565b005b34801561017e57600080fd5b506101706004803603602081101561019557600080fd5b50356001600160a01b03166104c6565b610170600480360360408110156101bb57600080fd5b506001600160a01b0381351690602001356105ac565b3480156101dd57600080fd5b506101e66107de565b604080516001600160a01b039092168252519081900360200190f35b34801561020e57600080fd5b506102176107ed565b60408051918252519081900360200190f35b34801561023557600080fd5b506101e66107f2565b34801561024a57600080fd5b506101706004803603602081101561026157600080fd5b50356001600160a01b0316610801565b34801561027d57600080fd5b506101706108f7565b34801561029257600080fd5b50610170600480360360208110156102a957600080fd5b5035610954565b3480156102bc57600080fd5b506101e6610a52565b3480156102d157600080fd5b506102da610a61565b604080519115158252519081900360200190f35b3480156102fa57600080fd5b506102da610a71565b34801561030f57600080fd5b506101706004803603606081101561032657600080fd5b506001600160a01b03813581169160208101359091169060400135610a81565b34801561035257600080fd5b506101e6610b23565b34801561036757600080fd5b506101e6610b32565b34801561037c57600080fd5b50610217610b41565b34801561039157600080fd5b50610217610b47565b3480156103a657600080fd5b50610170610b4d565b3480156103bb57600080fd5b50610170600480360360208110156103d257600080fd5b50356001600160a01b0316610baa565b3480156103ee57600080fd5b50610170610c92565b34801561040357600080fd5b50610217610cef565b34801561041857600080fd5b506102da610cf5565b34801561042d57600080fd5b506101706004803603602081101561044457600080fd5b50356001600160a01b0316610d05565b34801561046057600080fd5b506102da610deb565b61047233610dfb565b6104b1576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b81b1916600160b81b179055565b6104cf33610dfb565b61050e576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610516610a61565b15610558576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60355481906001600160a01b03848116911614156105e5576036546105e0906001600160a01b038581169133911684610e86565b610786565b61060a6103e8603954016106046103e885610ee690919063ffffffff16565b90610f48565b905060006106188383610f8a565b90506001600160a01b0384161561066657603754610645906001600160a01b038681169133911684610e86565b603654610661906001600160a01b038681169133911685610e86565b610731565b8234146106ba576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6037546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156106f4573d6000803e3d6000fd5b506036546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561072f573d6000803e3d6000fd5b505b603754604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b603654604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6038546001600160a01b031690565b600181565b6037546001600160a01b031690565b61080a33610dfb565b610849576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610851610deb565b156108a3576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b603780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090033610dfb565b61093f576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b01b1916600160b01b179055565b6038546001600160a01b031633146109b3576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109c657506103e88111155b610a17576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60398190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6033546001600160a01b031690565b603854600160b81b900460ff1690565b603854600160a01b900460ff1690565b610a8a33610dfb565b610ac9576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610ad4838383610fcc565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6035546001600160a01b031690565b6036546001600160a01b031690565b60395490565b6103e881565b610b5633610dfb565b610b95576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a01b1916600160a01b179055565b610bb333610dfb565b610bf2576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610bfa610a71565b15610c3e576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b603680546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610c9b33610dfb565b610cda576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a81b1916600160a81b179055565b60345490565b603854600160b01b900460ff1690565b610d0e33610dfb565b610d4d576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610d55610cf5565b15610d97576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b603854600160a81b900460ff1690565b6000610e0860345461100b565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e5457600080fd5b505afa158015610e68573d6000803e3d6000fd5b505050506040513d6020811015610e7e57600080fd5b505192915050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ee090859061112c565b50505050565b600082610ef557506000610f42565b82820282848281610f0257fe5b0414610f3f5760405162461bcd60e51b81526004018080602001828103825260218152602001806115d56021913960400191505060405180910390fd5b90505b92915050565b6000610f3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111dd565b6000610f3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061127f565b6001600160a01b038216610ff257610fed6001600160a01b038416826112d9565b611006565b6110066001600160a01b03831684836113be565b505050565b6033546000906001600160a01b031661106b576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110b757600080fd5b505afa1580156110cb573d6000803e3d6000fd5b505050506040513d60208110156110e157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e5457600080fd5b6060611181826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114109092919063ffffffff16565b805190915015611006578080602001905160208110156111a057600080fd5b50516110065760405162461bcd60e51b815260040180806020018281038252602a815260200180611616602a913960400191505060405180910390fd5b600081836112695760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578181015183820152602001611216565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161127557fe5b0495945050505050565b600081848411156112d15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561122e578181015183820152602001611216565b505050900390565b8047101561132e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611379576040519150601f19603f3d011682016040523d82523d6000602084013e61137e565b606091505b50509050806110065760405162461bcd60e51b815260040180806020018281038252603a81526020018061159b603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261100690849061112c565b606061141f8484600085611427565b949350505050565b606061143285611594565b611483576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106114c25780518252601f1990920191602091820191016114a3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611524576040519150601f19603f3d011682016040523d82523d6000602084013e611529565b606091505b5091509150811561153d57915061141f9050565b80511561154d5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561122e578181015183820152602001611216565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7773656e646572206973206e6f742061646d696e000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220ba5025b4b89cca724314d8d2c4d381f65f4f0dd54f7d436b4faa8f55113d7aa864736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployLicence deploys a new Ethereum contract, binding an instance of Licence to it. func DeployLicence(auth *bind.TransactOpts, backend bind.ContractBackend, _licence_ *big.Int, _float_ common.Address, _holder_ common.Address, _tknAddress_ common.Address, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Licence, error) { diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index 3133cb26..9c53d0f1 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea26469706673582212203cd1dda1af2e0ef40f2260cc78efeed7f655143cb598318bdb5efb763745c59b64736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220d1dd268d50721ab587f41e18273777c31bf1b791e54b37a5015ac2f1bff7d48d64736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/mocks/wallet.go b/pkg/bindings/mocks/wallet.go index 20019779..f0894245 100644 --- a/pkg/bindings/mocks/wallet.go +++ b/pkg/bindings/mocks/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"ConfirmedOperation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"confirmOperation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sendValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b506040516106ee3803806106ee8339818101604052604081101561007857600080fd5b50805160209091015161008a8261009a565b61009381610168565b505061021b565b600054610100900460ff16806100b357506100b3610215565b806100c1575060005460ff16155b6100fc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff16158015610127576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561015257603380546001600160a01b0319166001600160a01b0384161790555b8015610164576000805461ff00191690555b5050565b600054610100900460ff16806101815750610181610215565b8061018f575060005460ff16155b6101ca5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff161580156101f5576000805460ff1961ff0019909116610100171660011790555b81156101525760348290558015610164576000805461ff00191690555050565b303b1590565b6104968061022a6000396000f3fe60806040526004361061004e5760003560e01c806324a084df1461005a5780636945341f146100955780637d73b231146100aa578063a9059cbb146100db578063e2b4ce971461011457610055565b3661005557005b600080fd5b34801561006657600080fd5b506100936004803603604081101561007d57600080fd5b506001600160a01b03813516906020013561013b565b005b3480156100a157600080fd5b506100936101d9565b3480156100b657600080fd5b506100bf610269565b604080516001600160a01b039092168252519081900360200190f35b3480156100e757600080fd5b50610093600480360360408110156100fe57600080fd5b506001600160a01b038135169060200135610278565b34801561012057600080fd5b506101296102ae565b60408051918252519081900360200190f35b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b50509050806101d4576040805162461bcd60e51b815260206004820152601060248201526f1cd95b9915985b1d594819985a5b195960821b604482015290519081900360640190fd5b505050565b6101e2336102b4565b610233576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b604080516001815290517f0e8fe5b3baccd13c21d6a20906753a2bbcd86f70d69f4bde83f4e38cf3aae12b9181900360200190a1565b6033546001600160a01b031690565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156101d4573d6000803e3d6000fd5b60345490565b60006102c160345461033f565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b505192915050565b6033546000906001600160a01b031661039f576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d602081101561041557600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561030d57600080fdfea26469706673582212204e08a0e07917a25cb0b0453613ed04554369a7f87ae5bc8ea053e5f1013317aa64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b506040516106ee3803806106ee8339818101604052604081101561007857600080fd5b50805160209091015161008a8261009a565b61009381610168565b505061021b565b600054610100900460ff16806100b357506100b3610215565b806100c1575060005460ff16155b6100fc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff16158015610127576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561015257603380546001600160a01b0319166001600160a01b0384161790555b8015610164576000805461ff00191690555b5050565b600054610100900460ff16806101815750610181610215565b8061018f575060005460ff16155b6101ca5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff161580156101f5576000805460ff1961ff0019909116610100171660011790555b81156101525760348290558015610164576000805461ff00191690555050565b303b1590565b6104968061022a6000396000f3fe60806040526004361061004e5760003560e01c806324a084df1461005a5780636945341f146100955780637d73b231146100aa578063a9059cbb146100db578063e2b4ce971461011457610055565b3661005557005b600080fd5b34801561006657600080fd5b506100936004803603604081101561007d57600080fd5b506001600160a01b03813516906020013561013b565b005b3480156100a157600080fd5b506100936101d9565b3480156100b657600080fd5b506100bf610269565b604080516001600160a01b039092168252519081900360200190f35b3480156100e757600080fd5b50610093600480360360408110156100fe57600080fd5b506001600160a01b038135169060200135610278565b34801561012057600080fd5b506101296102ae565b60408051918252519081900360200190f35b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b50509050806101d4576040805162461bcd60e51b815260206004820152601060248201526f1cd95b9915985b1d594819985a5b195960821b604482015290519081900360640190fd5b505050565b6101e2336102b4565b610233576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b604080516001815290517f0e8fe5b3baccd13c21d6a20906753a2bbcd86f70d69f4bde83f4e38cf3aae12b9181900360200190a1565b6033546001600160a01b031690565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156101d4573d6000803e3d6000fd5b60345490565b60006102c160345461033f565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b505192915050565b6033546000906001600160a01b031661039f576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d602081101561041557600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561030d57600080fdfea2646970667358221220eaf357a724af327bccdd82b38b002160bf2fbe0f181a69220df934aa4a537e5864736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/oracle.go b/pkg/bindings/oracle.go index abe6eece..f0d4ffd3 100644 --- a/pkg/bindings/oracle.go +++ b/pkg/bindings/oracle.go @@ -31,7 +31,7 @@ var ( const OracleABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"}],\"name\":\"SetCryptoComparePublicKey\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_result\",\"type\":\"string\"}],\"name\":\"VerifiedProof\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_result\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"UpdateTokenRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cryptoCompareAPIPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"}],\"name\":\"updateCryptoCompareAPIPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // OracleBin is the compiled bytecode used for deploying new contracts. -var OracleBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b506040516200322f3803806200322f83398181016040526060811015620000a057600080fd5b5080516020820151604090920151909190620000bc836200010c565b620000c782620001e3565b620000d28162000299565b604051806060016040528060408152602001620031ef604091398051620001029160369160209091019062000355565b50505050620003f1565b600054610100900460ff1680620001285750620001286200034f565b8062000137575060005460ff16155b620001745760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff16158015620001a0576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001cc57603380546001600160a01b0319166001600160a01b0384161790555b8015620001df576000805461ff00191690555b5050565b600054610100900460ff1680620001ff5750620001ff6200034f565b806200020e575060005460ff16155b6200024b5760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff1615801562000277576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760348290558015620001df576000805461ff00191690555050565b600054610100900460ff1680620002b55750620002b56200034f565b80620002c4575060005460ff16155b620003015760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff161580156200032d576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760358290558015620001df576000805461ff00191690555050565b303b1590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039857805160ff1916838001178555620003c8565b82800160010185558215620003c8579182015b82811115620003c8578251825591602001919060010190620003ab565b50620003d6929150620003da565b5090565b5b80821115620003d65760008155600101620003db565b612dc080620004016000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630cb2a6bd146100675780633acbe96e146101375780637d73b231146101b4578063877337b0146101d8578063c2c3d054146101f2578063e2b4ce9714610260575b600080fd5b6101356004803603606081101561007d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156100a757600080fd5b8201836020820111156100b957600080fd5b803590602001918460018302840111600160201b831117156100da57600080fd5b919390929091602081019035600160201b8111156100f757600080fd5b82018360208201111561010957600080fd5b803590602001918460018302840111600160201b8311171561012a57600080fd5b509092509050610268565b005b61013f610441565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610179578181015183820152602001610161565b50505050905090810190601f1680156101a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101bc6104cf565b604080516001600160a01b039092168252519081900360200190f35b6101e06104de565b60408051918252519081900360200190f35b6101356004803603602081101561020857600080fd5b810190602081018135600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460018302840111600160201b8311171561025557600080fd5b5090925090506104e4565b6101e06105b6565b600080610274876105bc565b965050509450505050816102cf576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e206d75737420626520617661696c61626c65000000000000000000604482015290519081900360640190fd5b6000806103d188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250506036805460408051602060026000196101006001871615020190941693909304601f810184900484028201840190925281815294509192508301828280156103c65780601f1061039b576101008083540402835291602001916103c6565b820191906000526020600020905b8154815290600101906020018083116103a957829003601f168201915b505050505086610745565b909250905081156104365760006104256104208a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c6692505050565b610eff565b9050816104338b8383610f12565b50505b505050505050505050565b6036805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b820191906000526020600020905b8154815290600101906020018083116104aa57829003601f168201915b505050505081565b6033546001600160a01b031690565b60355490565b6104ed33610f98565b610534576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61054060368383612bfd565b507fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa33838360405180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b60345490565b60606000806000806000806105d2603554611023565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561065b57600080fd5b8101908080516040519392919084600160201b82111561067a57600080fd5b90830190602082018581111561068f57600080fd5b8251600160201b8111828201881017156106a857600080fd5b82525081516020918201929091019080838360005b838110156106d55781810151838201526020016106bd565b50505050905090810190601f1680156107025780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610795576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b6041856001815181106107a457fe5b016020015160f81c146107fe576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b6040805160418082526080820190925260609160208201818036833701905050905061082e818760026041611144565b85516060908790604490811061084057fe5b0160200151875160f89190911c90610100908990604390811061085f57fe5b016020015160f81c0201146108b4576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b60408051606080825260808201909252816020820181803683370190505090506108e2818860456060611144565b6108ed818388611161565b610932576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6040805160148082528183019092526060916020820181803683370190505090506109618183600b6014611144565b60008061096e838961121a565b9092509050816109b4576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c80825260608281019093526020820181803683370190505090506109e281866034602c611144565b6109eb81611578565b8051906020012060028d6040516020018082805190602001908083835b60208310610a275780518252601f199092019160209182019101610a08565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a8a5780518252601f199092019160209182019101610a6b565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610ac9573d6000803e3d6000fd5b5050506040513d6020811015610ade57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014610b53576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610bb7578181015183820152602001610b9f565b50505050905090810190601f168015610be45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c17578181015183820152602001610bff565b50505050905090810190601f168015610c445780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b60208310610c9d5780518252601f199092019160209182019101610c7e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052519050600881118015610ce55750601c8111155b610d2b576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b604080516007808252818301909252606091602082018180368337019050509050610dc081856040516020018082805190602001908083835b60208310610d835780518252601f199092019160209182019101610d64565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007611144565b805160208201207f7a2d79c44ec25893f1deb7192af566af2e14c179cce8e62e025bd750d6e078e214610e2c576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b610e34612c7b565b610e3d85611bbc565b9050610e6b610e64604051806040016040528060018152602001601d60f91b815250611bbc565b8290611be1565b5080600001519250610e9f610e98604051806040016040528060018152602001607d60f81b815250611bbc565b8290611bfb565b508051600019840114610eeb576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b610ef481611c59565b93505050505b919050565b6000610f0c826012611cc0565b92915050565b610f1d603554611023565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b50505050505050565b6000610fa5603454611023565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d602081101561101b57600080fd5b505192915050565b6033546000906001600160a01b0316611083576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d60208110156110f957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610ff157600080fd5b60208481019084840101611159828285612535565b505050505050565b60008060006002866040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156111d7573d6000803e3d6000fd5b5050506040513d60208110156111ec57600080fd5b505190506111fa8186612573565b845160208601206001600160a01b03918216911614925050509392505050565b600080836040516020018082805190602001908083835b602083106112505780518252601f199092019160209182019101611231565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461128e57fe5b611296612c7b565b61129f85611bbc565b90506112a9612c7b565b6112cb604051806040016040528060018152602001601d60f91b815250611bbc565b90506112d5612c7b565b6112f7604051806040016040528060018152602001600160fd1b815250611bbc565b9050600061131561131061130b8685611be1565b611c59565b6126fc565b90506000811180156113275750602081105b611364576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061137b61137661130b8786611be1565b612709565b60ff1690506000811180156113905750600d81105b6113cf576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b60006113e161131061130b8887611be1565b90506107e1811180156113f55750610bb881105b611433576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b600061144561131061130b8989611be1565b905060198110611489576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b600061149b61131061130b8a8a611be1565b9050603c81106114e1576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006114f361131061130b8b8b611be1565b9050603c8110611539576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b6402540be4009093026305f5e10090940293909301620f4240909402939093016127109093029290920160649091020101958611979596505050505050565b606060008060008060008651905060608167ffffffffffffffff8111801561159f57600080fd5b506040519080825280601f01601f1916602001820160405280156115ca576020820181803683370190505b509050600080831180156115df575060048306155b611630576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f1689600285038151811061166057fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156116a257600283039250611710565b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f168960018503815181106116d257fe5b01602090810151604080516001600160f81b031990921682840152805180830360010181526021909201905280519101201415611710576001830392505b600319831660005b8181101561192e576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061174a57fe5b0160200151815160f89190911c90811061176057fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061179757fe5b0160200151815160f89190911c9081106117ad57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106117e457fe5b0160200151815160f89190911c9081106117fa57fe5b602001015160f81c60f81b96506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061183157fe5b0160200151815160f89190911c90811061184757fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061188657fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b0319169186919081106118d157fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061191257fe5b60200101906001600160f81b031916908160001a905350611718565b81850360021415611a26576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061196357fe5b0160200151815160f89190911c90811061197957fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106119b057fe5b0160200151815160f89190911c9081106119c657fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b16848480600101955081518110611a0a57fe5b60200101906001600160f81b031916908160001a905350611bad565b81850360031415611bad576040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611a5b57fe5b0160200151815160f89190911c908110611a7157fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611aa857fe5b0160200151815160f89190911c908110611abe57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611af557fe5b0160200151815160f89190911c908110611b0b57fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c16179092169186918110611b4a57fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110611b9557fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b611bc4612c7b565b506040805180820190915281518152602082810190820152919050565b611be9612c7b565b611bf4838383612a15565b5092915050565b611c03612c7b565b815183511015611c14575081610f0c565b8151835160208086015190850151910191909103906001908214611c42575082516020840151819020908220145b8015611c5057835185510385525b50929392505050565b606080826000015167ffffffffffffffff81118015611c7757600080fd5b506040519080825280601f01601f191660200182016040528015611ca2576020820181803683370190505b5090506000602082019050611bf48185602001518660000151612535565b60008281808080808080808080805b8b518110156122de578b51600360fc1b908d9083908110611cec57fe5b01602001516001600160f81b03191610801590611d2a57508b51603960f81b908d9083908110611d1857fe5b01602001516001600160f81b03191611155b8015611d34575083155b15611dcc578415611d8657611d4a8a600a612a86565b9950611d79603060f81b60f81c8d8381518110611d6357fe5b01602001518c9160f89190911c0360ff16612ae6565b9950600190970196611dc7565b60019550611d958b600a612a86565b9a50611dc4603060f81b60f81c8d8381518110611dae57fe5b01602001518d9160f89190911c0360ff16612ae6565b9a505b6122d6565b8b51600360fc1b908d9083908110611de057fe5b01602001516001600160f81b03191610801590611e1e57508b51603960f81b908d9083908110611e0c57fe5b01602001516001600160f81b03191611155b8015611e275750835b15611e6d57611e3789600a612a86565b9850611e66603060f81b60f81c8d8381518110611e5057fe5b01602001518b9160f89190911c0360ff16612ae6565b98506122d6565b8b51601760f91b908d9083908110611e8157fe5b01602001516001600160f81b0319161415611f885785611ee0576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415611f33576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315611f7f576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b600194506122d6565b8b51602d60f81b908d9083908110611f9c57fe5b01602001516001600160f81b0319161415612092578215611ff2576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612032576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612089576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600192506122d6565b8b51602b60f81b908d90839081106120a657fe5b01602001516001600160f81b031916141561219c5781156120fc576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b821561213c576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612193576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600191506122d6565b8b51604560f81b908d90839081106121b057fe5b01602001516001600160f81b03191614806121eb57508b51606560f81b908d90839081106121da57fe5b01602001516001600160f81b031916145b15612299578561223a576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b831561228d576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b600193508096506122d6565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101611ccf565b82806122e75750815b15612300578660020181116122fb57600080fd5b612315565b83156123155786600101811161231557600080fd5b8215612396578d891061238c57604e8e8a0310612369576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161237757fe5b049c50610f0c9b505050505050505050505050565b888e039d506123a3565b6123a08e8a612ae6565b9d505b878e1061246b57604e88106123e95760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6123f78b600a8a900a612a86565b9a506124038b8b612ae6565b9a50604e888f031061244c576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b612464888f03600a0a8c612a8690919063ffffffff16565b9a50612522565b8d88039750604e88106124af5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b87600a0a8a816124bb57fe5b049950604e8e106124fd5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6125138e600a0a8c612a8690919063ffffffff16565b9a5061251f8b8b612ae6565b9a505b50989d9c50505050505050505050505050565b5b60208110612555578151835260209283019290910190601f1901612536565b905182516020929092036101000a6000190180199091169116179052565b600081516041146125cb576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a601b81148015906125f257508060ff16601c14155b1561262e5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ccd6022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561268a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166126f2576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b6000610f0c826000611cc0565b600080826040516020018082805190602001908083835b6020831061273f5780518252601f199092019160209182019101612720565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f4a18c9083b936e0757952a5d9d34b5575d427661506fbe9908c2a1da3f3e80d98114156127ae576001915050610efa565b7f78ec83563b948f0ac242d7eaefd592adf65964e11cc27f11ae41faa99a1e990a8114156127e0576002915050610efa565b7f2bab7d3f253ae0e3722abcc2571faced288946968116996ffc3de31fb7348ec3811415612812576003915050610efa565b7fc6f33aba2381b69f05afc78835e501547a9daffa08d674623068c378423ac188811415612844576004915050610efa565b7fdb5ee1006003349b29eda5be5fe34f728659f836a948d4ec595114aebbb159d3811415612876576005915050610efa565b7f44a0046ab54c1458fc3c39dfcadc52509ad809730ec301470d2d747dbe77242d8114156128a8576006915050610efa565b7f74d9e46f10329e61dc333ff1800274be516163110de31961b4e0c61de3e90c5c8114156128da576007915050610efa565b7fed40c08ab6f3d9c5d71155e25b1271d5b9eca8c27bf89e1d2293fcb77c5abf6481141561290c576008915050610efa565b7f7d801199c77197eb9933a633741db90c2c6f3d7d14aca35f5f80a41b4a8863ac81141561293e576009915050610efa565b7fb7841ed82fc96483f061ddc0b19846855df22558c4aea3b3b058ce0d9f1f516481141561297057600a915050610efa565b7f487851233e540dddea8f904d6802590aead5463b1c44965d68348bb7def25cf48114156129a257600b915050610efa565b7f3bd971d8758c58fe0c4d635451404450c5edda87d624a89819e0be5a122933dc8114156129d457600c915050610efa565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b612a1d612c7b565b6000612a3b8560000151866020015186600001518760200151612b40565b60208087018051918601919091528051820385528651905191925001811415612a675760008552612a7d565b8351835186519101900385528351810160208601525b50909392505050565b600082612a9557506000610f0c565b82820282848281612aa257fe5b0414612adf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d6a6021913960400191505060405180910390fd5b9392505050565b600082820183811015612adf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008381868511612bee5760208511612bb35783518251600019600860208990030260020a011991821690888a018890039083165b828114612ba557818610612b93578a8a019650505050505050612bf5565b50600190940180519094908316612b75565b859650505050505050612bf5565b508383206000905b8588038211612bec5785832081811415612bdb5783945050505050612bf5565b506001928301929190910190612bbb565b505b5050508284015b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c3e5782800160ff19823516178555612c6b565b82800160010185558215612c6b579182015b82811115612c6b578235825591602001919060010190612c50565b50612c77929150612c95565b5090565b604051806040016040528060008152602001600081525090565b5b80821115612c775760008155600101612c9656fe6d6f7265207468616e20373720646563696d616c206469676974732070617273656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220722ef616d78df62175c0d6d078c623dc93acda4c9f69b132d59c276e01c5348064736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca" +var OracleBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b506040516200322f3803806200322f83398181016040526060811015620000a057600080fd5b5080516020820151604090920151909190620000bc836200010c565b620000c782620001e3565b620000d28162000299565b604051806060016040528060408152602001620031ef604091398051620001029160369160209091019062000355565b50505050620003f1565b600054610100900460ff1680620001285750620001286200034f565b8062000137575060005460ff16155b620001745760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff16158015620001a0576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001cc57603380546001600160a01b0319166001600160a01b0384161790555b8015620001df576000805461ff00191690555b5050565b600054610100900460ff1680620001ff5750620001ff6200034f565b806200020e575060005460ff16155b6200024b5760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff1615801562000277576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760348290558015620001df576000805461ff00191690555050565b600054610100900460ff1680620002b55750620002b56200034f565b80620002c4575060005460ff16155b620003015760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff161580156200032d576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760358290558015620001df576000805461ff00191690555050565b303b1590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039857805160ff1916838001178555620003c8565b82800160010185558215620003c8579182015b82811115620003c8578251825591602001919060010190620003ab565b50620003d6929150620003da565b5090565b5b80821115620003d65760008155600101620003db565b612dc080620004016000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630cb2a6bd146100675780633acbe96e146101375780637d73b231146101b4578063877337b0146101d8578063c2c3d054146101f2578063e2b4ce9714610260575b600080fd5b6101356004803603606081101561007d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156100a757600080fd5b8201836020820111156100b957600080fd5b803590602001918460018302840111600160201b831117156100da57600080fd5b919390929091602081019035600160201b8111156100f757600080fd5b82018360208201111561010957600080fd5b803590602001918460018302840111600160201b8311171561012a57600080fd5b509092509050610268565b005b61013f610441565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610179578181015183820152602001610161565b50505050905090810190601f1680156101a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101bc6104cf565b604080516001600160a01b039092168252519081900360200190f35b6101e06104de565b60408051918252519081900360200190f35b6101356004803603602081101561020857600080fd5b810190602081018135600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460018302840111600160201b8311171561025557600080fd5b5090925090506104e4565b6101e06105b6565b600080610274876105bc565b965050509450505050816102cf576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e206d75737420626520617661696c61626c65000000000000000000604482015290519081900360640190fd5b6000806103d188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250506036805460408051602060026000196101006001871615020190941693909304601f810184900484028201840190925281815294509192508301828280156103c65780601f1061039b576101008083540402835291602001916103c6565b820191906000526020600020905b8154815290600101906020018083116103a957829003601f168201915b505050505086610745565b909250905081156104365760006104256104208a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c6692505050565b610eff565b9050816104338b8383610f12565b50505b505050505050505050565b6036805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b820191906000526020600020905b8154815290600101906020018083116104aa57829003601f168201915b505050505081565b6033546001600160a01b031690565b60355490565b6104ed33610f98565b610534576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61054060368383612bfd565b507fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa33838360405180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b60345490565b60606000806000806000806105d2603554611023565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561065b57600080fd5b8101908080516040519392919084600160201b82111561067a57600080fd5b90830190602082018581111561068f57600080fd5b8251600160201b8111828201881017156106a857600080fd5b82525081516020918201929091019080838360005b838110156106d55781810151838201526020016106bd565b50505050905090810190601f1680156107025780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610795576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b6041856001815181106107a457fe5b016020015160f81c146107fe576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b6040805160418082526080820190925260609160208201818036833701905050905061082e818760026041611144565b85516060908790604490811061084057fe5b0160200151875160f89190911c90610100908990604390811061085f57fe5b016020015160f81c0201146108b4576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b60408051606080825260808201909252816020820181803683370190505090506108e2818860456060611144565b6108ed818388611161565b610932576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6040805160148082528183019092526060916020820181803683370190505090506109618183600b6014611144565b60008061096e838961121a565b9092509050816109b4576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c80825260608281019093526020820181803683370190505090506109e281866034602c611144565b6109eb81611578565b8051906020012060028d6040516020018082805190602001908083835b60208310610a275780518252601f199092019160209182019101610a08565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a8a5780518252601f199092019160209182019101610a6b565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610ac9573d6000803e3d6000fd5b5050506040513d6020811015610ade57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014610b53576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610bb7578181015183820152602001610b9f565b50505050905090810190601f168015610be45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c17578181015183820152602001610bff565b50505050905090810190601f168015610c445780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b60208310610c9d5780518252601f199092019160209182019101610c7e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052519050600881118015610ce55750601c8111155b610d2b576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b604080516007808252818301909252606091602082018180368337019050509050610dc081856040516020018082805190602001908083835b60208310610d835780518252601f199092019160209182019101610d64565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007611144565b805160208201207f7a2d79c44ec25893f1deb7192af566af2e14c179cce8e62e025bd750d6e078e214610e2c576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b610e34612c7b565b610e3d85611bbc565b9050610e6b610e64604051806040016040528060018152602001601d60f91b815250611bbc565b8290611be1565b5080600001519250610e9f610e98604051806040016040528060018152602001607d60f81b815250611bbc565b8290611bfb565b508051600019840114610eeb576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b610ef481611c59565b93505050505b919050565b6000610f0c826012611cc0565b92915050565b610f1d603554611023565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b50505050505050565b6000610fa5603454611023565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d602081101561101b57600080fd5b505192915050565b6033546000906001600160a01b0316611083576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d60208110156110f957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610ff157600080fd5b60208481019084840101611159828285612535565b505050505050565b60008060006002866040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156111d7573d6000803e3d6000fd5b5050506040513d60208110156111ec57600080fd5b505190506111fa8186612573565b845160208601206001600160a01b03918216911614925050509392505050565b600080836040516020018082805190602001908083835b602083106112505780518252601f199092019160209182019101611231565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461128e57fe5b611296612c7b565b61129f85611bbc565b90506112a9612c7b565b6112cb604051806040016040528060018152602001601d60f91b815250611bbc565b90506112d5612c7b565b6112f7604051806040016040528060018152602001600160fd1b815250611bbc565b9050600061131561131061130b8685611be1565b611c59565b6126fc565b90506000811180156113275750602081105b611364576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061137b61137661130b8786611be1565b612709565b60ff1690506000811180156113905750600d81105b6113cf576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b60006113e161131061130b8887611be1565b90506107e1811180156113f55750610bb881105b611433576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b600061144561131061130b8989611be1565b905060198110611489576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b600061149b61131061130b8a8a611be1565b9050603c81106114e1576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006114f361131061130b8b8b611be1565b9050603c8110611539576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b6402540be4009093026305f5e10090940293909301620f4240909402939093016127109093029290920160649091020101958611979596505050505050565b606060008060008060008651905060608167ffffffffffffffff8111801561159f57600080fd5b506040519080825280601f01601f1916602001820160405280156115ca576020820181803683370190505b509050600080831180156115df575060048306155b611630576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f1689600285038151811061166057fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156116a257600283039250611710565b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f168960018503815181106116d257fe5b01602090810151604080516001600160f81b031990921682840152805180830360010181526021909201905280519101201415611710576001830392505b600319831660005b8181101561192e576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061174a57fe5b0160200151815160f89190911c90811061176057fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061179757fe5b0160200151815160f89190911c9081106117ad57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106117e457fe5b0160200151815160f89190911c9081106117fa57fe5b602001015160f81c60f81b96506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061183157fe5b0160200151815160f89190911c90811061184757fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061188657fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b0319169186919081106118d157fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061191257fe5b60200101906001600160f81b031916908160001a905350611718565b81850360021415611a26576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061196357fe5b0160200151815160f89190911c90811061197957fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106119b057fe5b0160200151815160f89190911c9081106119c657fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b16848480600101955081518110611a0a57fe5b60200101906001600160f81b031916908160001a905350611bad565b81850360031415611bad576040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611a5b57fe5b0160200151815160f89190911c908110611a7157fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611aa857fe5b0160200151815160f89190911c908110611abe57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611af557fe5b0160200151815160f89190911c908110611b0b57fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c16179092169186918110611b4a57fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110611b9557fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b611bc4612c7b565b506040805180820190915281518152602082810190820152919050565b611be9612c7b565b611bf4838383612a15565b5092915050565b611c03612c7b565b815183511015611c14575081610f0c565b8151835160208086015190850151910191909103906001908214611c42575082516020840151819020908220145b8015611c5057835185510385525b50929392505050565b606080826000015167ffffffffffffffff81118015611c7757600080fd5b506040519080825280601f01601f191660200182016040528015611ca2576020820181803683370190505b5090506000602082019050611bf48185602001518660000151612535565b60008281808080808080808080805b8b518110156122de578b51600360fc1b908d9083908110611cec57fe5b01602001516001600160f81b03191610801590611d2a57508b51603960f81b908d9083908110611d1857fe5b01602001516001600160f81b03191611155b8015611d34575083155b15611dcc578415611d8657611d4a8a600a612a86565b9950611d79603060f81b60f81c8d8381518110611d6357fe5b01602001518c9160f89190911c0360ff16612ae6565b9950600190970196611dc7565b60019550611d958b600a612a86565b9a50611dc4603060f81b60f81c8d8381518110611dae57fe5b01602001518d9160f89190911c0360ff16612ae6565b9a505b6122d6565b8b51600360fc1b908d9083908110611de057fe5b01602001516001600160f81b03191610801590611e1e57508b51603960f81b908d9083908110611e0c57fe5b01602001516001600160f81b03191611155b8015611e275750835b15611e6d57611e3789600a612a86565b9850611e66603060f81b60f81c8d8381518110611e5057fe5b01602001518b9160f89190911c0360ff16612ae6565b98506122d6565b8b51601760f91b908d9083908110611e8157fe5b01602001516001600160f81b0319161415611f885785611ee0576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415611f33576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315611f7f576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b600194506122d6565b8b51602d60f81b908d9083908110611f9c57fe5b01602001516001600160f81b0319161415612092578215611ff2576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612032576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612089576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600192506122d6565b8b51602b60f81b908d90839081106120a657fe5b01602001516001600160f81b031916141561219c5781156120fc576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b821561213c576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612193576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600191506122d6565b8b51604560f81b908d90839081106121b057fe5b01602001516001600160f81b03191614806121eb57508b51606560f81b908d90839081106121da57fe5b01602001516001600160f81b031916145b15612299578561223a576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b831561228d576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b600193508096506122d6565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101611ccf565b82806122e75750815b15612300578660020181116122fb57600080fd5b612315565b83156123155786600101811161231557600080fd5b8215612396578d891061238c57604e8e8a0310612369576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161237757fe5b049c50610f0c9b505050505050505050505050565b888e039d506123a3565b6123a08e8a612ae6565b9d505b878e1061246b57604e88106123e95760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6123f78b600a8a900a612a86565b9a506124038b8b612ae6565b9a50604e888f031061244c576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b612464888f03600a0a8c612a8690919063ffffffff16565b9a50612522565b8d88039750604e88106124af5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b87600a0a8a816124bb57fe5b049950604e8e106124fd5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6125138e600a0a8c612a8690919063ffffffff16565b9a5061251f8b8b612ae6565b9a505b50989d9c50505050505050505050505050565b5b60208110612555578151835260209283019290910190601f1901612536565b905182516020929092036101000a6000190180199091169116179052565b600081516041146125cb576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a601b81148015906125f257508060ff16601c14155b1561262e5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ccd6022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561268a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166126f2576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b6000610f0c826000611cc0565b600080826040516020018082805190602001908083835b6020831061273f5780518252601f199092019160209182019101612720565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f4a18c9083b936e0757952a5d9d34b5575d427661506fbe9908c2a1da3f3e80d98114156127ae576001915050610efa565b7f78ec83563b948f0ac242d7eaefd592adf65964e11cc27f11ae41faa99a1e990a8114156127e0576002915050610efa565b7f2bab7d3f253ae0e3722abcc2571faced288946968116996ffc3de31fb7348ec3811415612812576003915050610efa565b7fc6f33aba2381b69f05afc78835e501547a9daffa08d674623068c378423ac188811415612844576004915050610efa565b7fdb5ee1006003349b29eda5be5fe34f728659f836a948d4ec595114aebbb159d3811415612876576005915050610efa565b7f44a0046ab54c1458fc3c39dfcadc52509ad809730ec301470d2d747dbe77242d8114156128a8576006915050610efa565b7f74d9e46f10329e61dc333ff1800274be516163110de31961b4e0c61de3e90c5c8114156128da576007915050610efa565b7fed40c08ab6f3d9c5d71155e25b1271d5b9eca8c27bf89e1d2293fcb77c5abf6481141561290c576008915050610efa565b7f7d801199c77197eb9933a633741db90c2c6f3d7d14aca35f5f80a41b4a8863ac81141561293e576009915050610efa565b7fb7841ed82fc96483f061ddc0b19846855df22558c4aea3b3b058ce0d9f1f516481141561297057600a915050610efa565b7f487851233e540dddea8f904d6802590aead5463b1c44965d68348bb7def25cf48114156129a257600b915050610efa565b7f3bd971d8758c58fe0c4d635451404450c5edda87d624a89819e0be5a122933dc8114156129d457600c915050610efa565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b612a1d612c7b565b6000612a3b8560000151866020015186600001518760200151612b40565b60208087018051918601919091528051820385528651905191925001811415612a675760008552612a7d565b8351835186519101900385528351810160208601525b50909392505050565b600082612a9557506000610f0c565b82820282848281612aa257fe5b0414612adf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d6a6021913960400191505060405180910390fd5b9392505050565b600082820183811015612adf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008381868511612bee5760208511612bb35783518251600019600860208990030260020a011991821690888a018890039083165b828114612ba557818610612b93578a8a019650505050505050612bf5565b50600190940180519094908316612b75565b859650505050505050612bf5565b508383206000905b8588038211612bec5785832081811415612bdb5783945050505050612bf5565b506001928301929190910190612bbb565b505b5050508284015b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c3e5782800160ff19823516178555612c6b565b82800160010185558215612c6b579182015b82811115612c6b578235825591602001919060010190612c50565b50612c77929150612c95565b5090565b604051806040016040528060008152602001600081525090565b5b80821115612c775760008155600101612c9656fe6d6f7265207468616e20373720646563696d616c206469676974732070617273656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d35ffff3eb2118e46a775b8e7b6f9a6e471056c1f12247d8a85462b6e4ce351a64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca" // DeployOracle deploys a new Ethereum contract, binding an instance of Oracle to it. func DeployOracle(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _tokenWhitelistNode_ [32]byte) (common.Address, *types.Transaction, *Oracle, error) { diff --git a/pkg/bindings/tokenWhitelist.go b/pkg/bindings/tokenWhitelist.go index b5c67ec2..f1c87a93 100644 --- a/pkg/bindings/tokenWhitelist.go +++ b/pkg/bindings/tokenWhitelist.go @@ -31,7 +31,7 @@ var ( const TokenWhitelistABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_oracleNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_stablecoinAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"AddedExclusiveMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"AddedMethodId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_magnitude\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"AddedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"RemovedExclusiveMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"RemovedMethodId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"RemovedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"}],\"name\":\"UpdatedTokenLoadable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"}],\"name\":\"UpdatedTokenRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"UpdatedTokenRedeemable\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_symbols\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_magnitude\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"_loadable\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"_redeemable\",\"type\":\"bool[]\"},{\"internalType\":\"uint256\",\"name\":\"_lastUpdate\",\"type\":\"uint256\"}],\"name\":\"addTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getERC20RecipientAndAmount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStablecoinInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"isERC20MethodSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"isERC20MethodWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracleNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemableCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemableTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"}],\"name\":\"removeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"}],\"name\":\"setTokenLoadable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"setTokenRedeemable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stablecoin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_updateDate\",\"type\":\"uint256\"}],\"name\":\"updateTokenRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // TokenWhitelistBin is the compiled bytecode used for deploying new contracts. -var TokenWhitelistBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034553480156200005657600080fd5b506040516200281838038062002818833981810160405260808110156200007c57600080fd5b50805160208201516040830151606090930151919290916200009e8462000194565b620000a9826200026b565b603a9290925550603980546001600160a01b0319166001600160a01b039092169190911790555060366020527f36aaa0d2a881446a5d284caf55fe779596f3dd15619675545d6094c8909139c2805460ff1990811660019081179092557fbdd45af1473e0dd27b6e035ccafb153373c61968247ba4b7c0e6c1c96496792f80548216831790557f877171c55a6bbc4aa0ea34a24de07dd3c5952b4a7d66df2b953f79c7955a122780548216831790556323b872dd60e01b6000527f04324ec27bf37ba85969616ff61c6c0e3939d6b141697b749b0be22765b298708054909116909117905562000327565b600054610100900460ff1680620001b05750620001b062000321565b80620001bf575060005460ff16155b620001fc5760405162461bcd60e51b815260040180806020018281038252602e815260200180620027ea602e913960400191505060405180910390fd5b600054610100900460ff1615801562000228576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200025457603380546001600160a01b0319166001600160a01b0384161790555b801562000267576000805461ff00191690555b5050565b600054610100900460ff16806200028757506200028762000321565b8062000296575060005460ff16155b620002d35760405162461bcd60e51b815260040180806020018281038252602e815260200180620027ea602e913960400191505060405180910390fd5b600054610100900460ff16158015620002ff576000805460ff1961ff0019909116610100171660011790555b811562000254576034829055801562000267576000805461ff00191690555050565b303b1590565b6124b380620003376000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610582578063afc72e93146105b8578063d545782e14610659578063e2b4ce971461068b578063e9cbd8221461069357610116565b80636c3824ef146104ba5780637d73b2311461052857806380cc0dda1461054c578063872773061461055457610116565b80633efec5e9116100e95780633efec5e9146103ee578063443dd2a4146103f657806344b049bc1461044e5780635d793a7d146104565780636a1744dc1461048457610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc1461023e575b600080fd5b61012361069b565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a1565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c4565b6040518080602001888152602001878152602001861515815260200185151581526020018415158152602001838152602001828103825289818151815260200191508051906020019080838360005b838110156101fd5781810151838201526020016101e5565b50505050905090810190601f16801561022a5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ec600480360360c081101561025457600080fd5b810190602081018135600160201b81111561026e57600080fd5b82018360208201111561028057600080fd5b803590602001918460208302840111600160201b831117156102a157600080fd5b919390929091602081019035600160201b8111156102be57600080fd5b8201836020820111156102d057600080fd5b803590602001918460208302840111600160201b831117156102f157600080fd5b919390929091602081019035600160201b81111561030e57600080fd5b82018360208201111561032057600080fd5b803590602001918460208302840111600160201b8311171561034157600080fd5b919390929091602081019035600160201b81111561035e57600080fd5b82018360208201111561037057600080fd5b803590602001918460208302840111600160201b8311171561039157600080fd5b919390929091602081019035600160201b8111156103ae57600080fd5b8201836020820111156103c057600080fd5b803590602001918460208302840111600160201b831117156103e157600080fd5b9193509150356107c2565b005b610196610c35565b6103fe610d33565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043a578181015183820152602001610422565b505050509050019250505060405180910390f35b6103fe610d95565b6103ec6004803603604081101561046c57600080fd5b506001600160a01b0381351690602001351515610e7a565b61015c6004803603604081101561049a57600080fd5b5080356001600160a01b031690602001356001600160e01b031916611061565b6103ec600480360360208110156104d057600080fd5b810190602081018135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460208302840111600160201b8311171561051d57600080fd5b5090925090506110e8565b610530611395565b604080516001600160a01b039092168252519081900360200190f35b6101236113a4565b6103ec6004803603604081101561056a57600080fd5b506001600160a01b03813516906020013515156113aa565b6103ec6004803603606081101561059857600080fd5b506001600160a01b038135811691602081013590911690604001356114e3565b610636600480360360408110156105ce57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b50909250905061158d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ec6004803603606081101561066f57600080fd5b506001600160a01b0381351690602081013590604001356118ad565b6101236119f7565b6105306119fd565b60385490565b6001600160e01b0319811660009081526036602052604090205460ff165b919050565b6001600160a01b038116600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff8084169694840481169562010000909404169391929189918301828280156107a15780601f10610776576101008083540402835291602001916107a1565b820191906000526020600020905b81548152906001019060200180831161078457829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cb33611a0c565b610812576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b898814801561082057508986145b801561082b57508984145b801561083657508984145b610887576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c2757603560008d8d848181106108a257fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff161561091d576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b606061094261093d8c8c8581811061093157fe5b90506020020135611a97565b611ac3565b90506040518060e001604052808281526020018a8a8581811061096157fe5b9050602002013581526020016000815260200160011515815260200188888581811061098957fe5b905060200201351515151581526020018686858181106109a557fe5b9050602002013515151515815260200184815250603560008f8f868181106109c957fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a15929190612300565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c09091015160049091015560378d8d84818110610a8c57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad457fe5b9050602002013515610af257603854610aee906001611b31565b6038555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2057fe5b905060200201356001600160a01b0316838c8c87818110610b3d57fe5b905060200201358b8b88818110610b5057fe5b9050602002013515158a8a89818110610b6557fe5b90506020020135151560405180876001600160a01b03168152602001866001600160a01b031681526020018060200185815260200184151581526020018315158152602001828103825286818151815260200191508051906020019080838360005b83811015610bdf578181015183820152602001610bc7565b50505050905090810190601f168015610c0c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088a565b505050505050505050505050565b6039546001600160a01b0316600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff808416969484048116956201000090940416939192918991830182828015610d145780601f10610ce957610100808354040283529160200191610d14565b820191906000526020600020905b815481529060010190602001808311610cf757829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606037805480602002602001604051908101604052809291908181526020018280548015610d8b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d6d575b5050505050905090565b60608060385467ffffffffffffffff81118015610db157600080fd5b50604051908082528060200260200182016040528015610ddb578160200160208202803683370190505b5090506000805b603754811015610e7257600060378281548110610dfb57fe5b60009182526020808320909101546001600160a01b0316808352603590915260409091206003015490915060ff620100009091041615610e695780848481518110610e4257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de2565b509091505090565b610e8333611a0c565b610eca576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff16610f3a576040805162461bcd60e51b815260206004820152601f60248201527f72656465656d61626c653a20746f6b656e206e6f7420617661696c61626c6500604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff620100009091041615158115151415610fb8576040805162461bcd60e51b815260206004820152601b60248201527f72656465656d61626c653a206e6f207374617465206368616e67650000000000604482015290519081900360640190fd5b8015610fd457603854610fcc906001611b31565b603855610fe6565b603854610fe2906001611b92565b6038555b6001600160a01b038216600081815260356020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526035602052604081206003015460ff166110c6576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526036602052604090205460ff16919050565b6110f133611a0c565b611138576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b8181101561139057600083838381811061115157fe5b602090810292909201356001600160a01b0316600081815260359093526040909220600301549192505060ff166111c8576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526035602052604090206003015462010000900460ff161561120457603854611200906001611b92565b6038555b6001600160a01b038116600090815260356020526040812090611227828261237e565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b60375461125d906001611b92565b81101561131057816001600160a01b03166037828154811061127b57fe5b6000918252602090912001546001600160a01b0316141561130857603780546112a5906001611b92565b815481106112af57fe5b600091825260209091200154603780546001600160a01b0390921691839081106112d557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611310565b60010161124f565b50603780548061131c57fe5b6000828152602090819020820160001990810180546001600160a01b0319169055909101909155604080513381526001600160a01b0384169281019290925280517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad09281900390910190a15060010161113b565b505050565b6033546001600160a01b031690565b603a5490565b6113b333611a0c565b6113fa576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff1661146a576040805162461bcd60e51b815260206004820181905260248201527f6c6f616461626c653a20746f6b656e206973206e6f7420617661696c61626c65604482015290519081900360640190fd5b6001600160a01b0382166000818152603560209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114ec33611a0c565b611533576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61153e838383611bd4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b60008060248310156115e6576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061162c600086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c0e9050565b90506116388682611061565b61167e576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b14156116e657856116dc600487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b92509250506118a5565b6001600160e01b031981166323b872dd60e01b14156117dd576064841015611755576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b611799603086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc604487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b604484101561181d5760405162461bcd60e51b81526004018080602001828103825260258152602001806123f56025913960400191505060405180910390fd5b611861601086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc602487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b935093915050565b60006118ba603a54611d04565b90506118c533611a0c565b806118d85750336001600160a01b038216145b611922576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526035602052604090206003015460ff1661198b576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03841660008181526035602090815260409182902060028101879055600401859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60345490565b6039546001600160a01b031690565b6000611a19603454611d04565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a6557600080fd5b505afa158015611a79573d6000803e3d6000fd5b505050506040513d6020811015611a8f57600080fd5b505192915050565b611a9f6123c5565b6040516020810160405282815280602083015250611abc82611e25565b8152919050565b606080826000015167ffffffffffffffff81118015611ae157600080fd5b506040519080825280601f01601f191660200182016040528015611b0c576020820181803683370190505b5090506000602082019050611b2a8185602001518660000151611ebe565b5092915050565b600082820183811015611b8b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000611b8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611efc565b6001600160a01b038216611bfa57611bf56001600160a01b03841682611f93565b611390565b6113906001600160a01b0383168483612078565b6000611c1b826004611b31565b83511015611c67576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c75846020611b31565b90940151949350505050565b6000611c1b826020611b31565b6000611c9b826014611b31565b83511015611ce7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cf5846020611b31565b9094015160601c949350505050565b6033546000906001600160a01b0316611d64576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d6020811015611dda57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015611a6557600080fd5b60008082611e375760009150506106bf565b6fffffffffffffffffffffffffffffffff8316611e5b57601001600160801b830492505b67ffffffffffffffff8316611e7c5760080168010000000000000000830492505b63ffffffff8316611e9457600401600160201b830492505b61ffff8316611ea95760020162010000830492505b60ff8316611eb5576001015b60200392915050565b5b60208110611ede578151835260209283019290910190601f1901611ebf565b905182516020929092036101000a6000190180199091169116179052565b60008184841115611f8b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f50578181015183820152602001611f38565b50505050905090810190601f168015611f7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b80471015611fe8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114612033576040519150601f19603f3d011682016040523d82523d6000602084013e612038565b606091505b50509050806113905760405162461bcd60e51b815260040180806020018281038252603a81526020018061241a603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611390908490606061211a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121769092919063ffffffff16565b8051909150156113905780806020019051602081101561213957600080fd5b50516113905760405162461bcd60e51b815260040180806020018281038252602a815260200180612454602a913960400191505060405180910390fd5b6060612185848460008561218d565b949350505050565b6060612198856122fa565b6121e9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106122285780518252601f199092019160209182019101612209565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461228a576040519150601f19603f3d011682016040523d82523d6000602084013e61228f565b606091505b509150915081156122a35791506121859050565b8051156122b35780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611f50578181015183820152602001611f38565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234157805160ff191683800117855561236e565b8280016001018555821561236e579182015b8281111561236e578251825591602001919060010190612353565b5061237a9291506123df565b5090565b50805460018160011615610100020316600290046000825580601f106123a457506123c2565b601f0160209004906000526020600020908101906123c291906123df565b50565b604051806040016040528060008152602001600081525090565b5b8082111561237a57600081556001016123e056fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d617920686176652072657665727465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212200c3e72a5bbb67727e2c1c90e1e83395faabcbb4937004243c332eaa81a4ec24f64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var TokenWhitelistBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034553480156200005657600080fd5b506040516200281838038062002818833981810160405260808110156200007c57600080fd5b50805160208201516040830151606090930151919290916200009e8462000194565b620000a9826200026b565b603a9290925550603980546001600160a01b0319166001600160a01b039092169190911790555060366020527f36aaa0d2a881446a5d284caf55fe779596f3dd15619675545d6094c8909139c2805460ff1990811660019081179092557fbdd45af1473e0dd27b6e035ccafb153373c61968247ba4b7c0e6c1c96496792f80548216831790557f877171c55a6bbc4aa0ea34a24de07dd3c5952b4a7d66df2b953f79c7955a122780548216831790556323b872dd60e01b6000527f04324ec27bf37ba85969616ff61c6c0e3939d6b141697b749b0be22765b298708054909116909117905562000327565b600054610100900460ff1680620001b05750620001b062000321565b80620001bf575060005460ff16155b620001fc5760405162461bcd60e51b815260040180806020018281038252602e815260200180620027ea602e913960400191505060405180910390fd5b600054610100900460ff1615801562000228576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200025457603380546001600160a01b0319166001600160a01b0384161790555b801562000267576000805461ff00191690555b5050565b600054610100900460ff16806200028757506200028762000321565b8062000296575060005460ff16155b620002d35760405162461bcd60e51b815260040180806020018281038252602e815260200180620027ea602e913960400191505060405180910390fd5b600054610100900460ff16158015620002ff576000805460ff1961ff0019909116610100171660011790555b811562000254576034829055801562000267576000805461ff00191690555050565b303b1590565b6124b380620003376000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610582578063afc72e93146105b8578063d545782e14610659578063e2b4ce971461068b578063e9cbd8221461069357610116565b80636c3824ef146104ba5780637d73b2311461052857806380cc0dda1461054c578063872773061461055457610116565b80633efec5e9116100e95780633efec5e9146103ee578063443dd2a4146103f657806344b049bc1461044e5780635d793a7d146104565780636a1744dc1461048457610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc1461023e575b600080fd5b61012361069b565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a1565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c4565b6040518080602001888152602001878152602001861515815260200185151581526020018415158152602001838152602001828103825289818151815260200191508051906020019080838360005b838110156101fd5781810151838201526020016101e5565b50505050905090810190601f16801561022a5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ec600480360360c081101561025457600080fd5b810190602081018135600160201b81111561026e57600080fd5b82018360208201111561028057600080fd5b803590602001918460208302840111600160201b831117156102a157600080fd5b919390929091602081019035600160201b8111156102be57600080fd5b8201836020820111156102d057600080fd5b803590602001918460208302840111600160201b831117156102f157600080fd5b919390929091602081019035600160201b81111561030e57600080fd5b82018360208201111561032057600080fd5b803590602001918460208302840111600160201b8311171561034157600080fd5b919390929091602081019035600160201b81111561035e57600080fd5b82018360208201111561037057600080fd5b803590602001918460208302840111600160201b8311171561039157600080fd5b919390929091602081019035600160201b8111156103ae57600080fd5b8201836020820111156103c057600080fd5b803590602001918460208302840111600160201b831117156103e157600080fd5b9193509150356107c2565b005b610196610c35565b6103fe610d33565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043a578181015183820152602001610422565b505050509050019250505060405180910390f35b6103fe610d95565b6103ec6004803603604081101561046c57600080fd5b506001600160a01b0381351690602001351515610e7a565b61015c6004803603604081101561049a57600080fd5b5080356001600160a01b031690602001356001600160e01b031916611061565b6103ec600480360360208110156104d057600080fd5b810190602081018135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460208302840111600160201b8311171561051d57600080fd5b5090925090506110e8565b610530611395565b604080516001600160a01b039092168252519081900360200190f35b6101236113a4565b6103ec6004803603604081101561056a57600080fd5b506001600160a01b03813516906020013515156113aa565b6103ec6004803603606081101561059857600080fd5b506001600160a01b038135811691602081013590911690604001356114e3565b610636600480360360408110156105ce57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b50909250905061158d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ec6004803603606081101561066f57600080fd5b506001600160a01b0381351690602081013590604001356118ad565b6101236119f7565b6105306119fd565b60385490565b6001600160e01b0319811660009081526036602052604090205460ff165b919050565b6001600160a01b038116600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff8084169694840481169562010000909404169391929189918301828280156107a15780601f10610776576101008083540402835291602001916107a1565b820191906000526020600020905b81548152906001019060200180831161078457829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cb33611a0c565b610812576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b898814801561082057508986145b801561082b57508984145b801561083657508984145b610887576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c2757603560008d8d848181106108a257fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff161561091d576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b606061094261093d8c8c8581811061093157fe5b90506020020135611a97565b611ac3565b90506040518060e001604052808281526020018a8a8581811061096157fe5b9050602002013581526020016000815260200160011515815260200188888581811061098957fe5b905060200201351515151581526020018686858181106109a557fe5b9050602002013515151515815260200184815250603560008f8f868181106109c957fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a15929190612300565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c09091015160049091015560378d8d84818110610a8c57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad457fe5b9050602002013515610af257603854610aee906001611b31565b6038555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2057fe5b905060200201356001600160a01b0316838c8c87818110610b3d57fe5b905060200201358b8b88818110610b5057fe5b9050602002013515158a8a89818110610b6557fe5b90506020020135151560405180876001600160a01b03168152602001866001600160a01b031681526020018060200185815260200184151581526020018315158152602001828103825286818151815260200191508051906020019080838360005b83811015610bdf578181015183820152602001610bc7565b50505050905090810190601f168015610c0c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088a565b505050505050505050505050565b6039546001600160a01b0316600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff808416969484048116956201000090940416939192918991830182828015610d145780601f10610ce957610100808354040283529160200191610d14565b820191906000526020600020905b815481529060010190602001808311610cf757829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606037805480602002602001604051908101604052809291908181526020018280548015610d8b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d6d575b5050505050905090565b60608060385467ffffffffffffffff81118015610db157600080fd5b50604051908082528060200260200182016040528015610ddb578160200160208202803683370190505b5090506000805b603754811015610e7257600060378281548110610dfb57fe5b60009182526020808320909101546001600160a01b0316808352603590915260409091206003015490915060ff620100009091041615610e695780848481518110610e4257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de2565b509091505090565b610e8333611a0c565b610eca576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff16610f3a576040805162461bcd60e51b815260206004820152601f60248201527f72656465656d61626c653a20746f6b656e206e6f7420617661696c61626c6500604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff620100009091041615158115151415610fb8576040805162461bcd60e51b815260206004820152601b60248201527f72656465656d61626c653a206e6f207374617465206368616e67650000000000604482015290519081900360640190fd5b8015610fd457603854610fcc906001611b31565b603855610fe6565b603854610fe2906001611b92565b6038555b6001600160a01b038216600081815260356020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526035602052604081206003015460ff166110c6576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526036602052604090205460ff16919050565b6110f133611a0c565b611138576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b8181101561139057600083838381811061115157fe5b602090810292909201356001600160a01b0316600081815260359093526040909220600301549192505060ff166111c8576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526035602052604090206003015462010000900460ff161561120457603854611200906001611b92565b6038555b6001600160a01b038116600090815260356020526040812090611227828261237e565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b60375461125d906001611b92565b81101561131057816001600160a01b03166037828154811061127b57fe5b6000918252602090912001546001600160a01b0316141561130857603780546112a5906001611b92565b815481106112af57fe5b600091825260209091200154603780546001600160a01b0390921691839081106112d557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611310565b60010161124f565b50603780548061131c57fe5b6000828152602090819020820160001990810180546001600160a01b0319169055909101909155604080513381526001600160a01b0384169281019290925280517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad09281900390910190a15060010161113b565b505050565b6033546001600160a01b031690565b603a5490565b6113b333611a0c565b6113fa576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff1661146a576040805162461bcd60e51b815260206004820181905260248201527f6c6f616461626c653a20746f6b656e206973206e6f7420617661696c61626c65604482015290519081900360640190fd5b6001600160a01b0382166000818152603560209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114ec33611a0c565b611533576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61153e838383611bd4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b60008060248310156115e6576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061162c600086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c0e9050565b90506116388682611061565b61167e576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b14156116e657856116dc600487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b92509250506118a5565b6001600160e01b031981166323b872dd60e01b14156117dd576064841015611755576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b611799603086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc604487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b604484101561181d5760405162461bcd60e51b81526004018080602001828103825260258152602001806123f56025913960400191505060405180910390fd5b611861601086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc602487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b935093915050565b60006118ba603a54611d04565b90506118c533611a0c565b806118d85750336001600160a01b038216145b611922576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526035602052604090206003015460ff1661198b576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03841660008181526035602090815260409182902060028101879055600401859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60345490565b6039546001600160a01b031690565b6000611a19603454611d04565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a6557600080fd5b505afa158015611a79573d6000803e3d6000fd5b505050506040513d6020811015611a8f57600080fd5b505192915050565b611a9f6123c5565b6040516020810160405282815280602083015250611abc82611e25565b8152919050565b606080826000015167ffffffffffffffff81118015611ae157600080fd5b506040519080825280601f01601f191660200182016040528015611b0c576020820181803683370190505b5090506000602082019050611b2a8185602001518660000151611ebe565b5092915050565b600082820183811015611b8b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000611b8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611efc565b6001600160a01b038216611bfa57611bf56001600160a01b03841682611f93565b611390565b6113906001600160a01b0383168483612078565b6000611c1b826004611b31565b83511015611c67576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c75846020611b31565b90940151949350505050565b6000611c1b826020611b31565b6000611c9b826014611b31565b83511015611ce7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cf5846020611b31565b9094015160601c949350505050565b6033546000906001600160a01b0316611d64576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d6020811015611dda57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015611a6557600080fd5b60008082611e375760009150506106bf565b6fffffffffffffffffffffffffffffffff8316611e5b57601001600160801b830492505b67ffffffffffffffff8316611e7c5760080168010000000000000000830492505b63ffffffff8316611e9457600401600160201b830492505b61ffff8316611ea95760020162010000830492505b60ff8316611eb5576001015b60200392915050565b5b60208110611ede578151835260209283019290910190601f1901611ebf565b905182516020929092036101000a6000190180199091169116179052565b60008184841115611f8b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f50578181015183820152602001611f38565b50505050905090810190601f168015611f7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b80471015611fe8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114612033576040519150601f19603f3d011682016040523d82523d6000602084013e612038565b606091505b50509050806113905760405162461bcd60e51b815260040180806020018281038252603a81526020018061241a603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611390908490606061211a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121769092919063ffffffff16565b8051909150156113905780806020019051602081101561213957600080fd5b50516113905760405162461bcd60e51b815260040180806020018281038252602a815260200180612454602a913960400191505060405180910390fd5b6060612185848460008561218d565b949350505050565b6060612198856122fa565b6121e9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106122285780518252601f199092019160209182019101612209565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461228a576040519150601f19603f3d011682016040523d82523d6000602084013e61228f565b606091505b509150915081156122a35791506121859050565b8051156122b35780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611f50578181015183820152602001611f38565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234157805160ff191683800117855561236e565b8280016001018555821561236e579182015b8281111561236e578251825591602001919060010190612353565b5061237a9291506123df565b5090565b50805460018160011615610100020316600290046000825580601f106123a457506123c2565b601f0160209004906000526020600020908101906123c291906123df565b50565b604051806040016040528060008152602001600081525090565b5b8082111561237a57600081556001016123e056fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d617920686176652072657665727465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220daac22934635741668a025b4dcb08a026c7833a869b78ed0746aa49a9c3231b964736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployTokenWhitelist deploys a new Ethereum contract, binding an instance of TokenWhitelist to it. func DeployTokenWhitelist(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _oracleNode_ [32]byte, _controllerNode_ [32]byte, _stablecoinAddress_ common.Address) (common.Address, *types.Transaction, *TokenWhitelist, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index e50d5eb2..4f8a9181 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -28,10 +28,10 @@ var ( ) // WalletABI is the input ABI used to generate the binding from. -const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"SetMonolith2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"SetPersonal2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"monolith2FA\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"personal2FA\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setMonolith2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"setPersonal2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" +const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_privileged\",\"type\":\"bool\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"SetMonolith2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"SetPersonal2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executePrivilegedRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"monolith2FA\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"personal2FA\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"privileged\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setMonolith2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"setPersonal2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b506158f5806200008a6000396000f3fe6080604052600436106102885760003560e01c8063747c31d61161015a578063cbd2ac68116100c1578063de212bf31161007a578063de212bf314610d77578063e2b4ce9714610d8c578063e61c51ca14610da1578063f36febda14610dcb578063f421764814610e04578063f8b2cb4f14610e7f57610288565b8063cbd2ac6814610c21578063cccdc55614610c4b578063cd7958dd14610c60578063ce0b5bd514610d0e578063cf0a866b14610d38578063d251fefc14610d4d57610288565b806390e690c71161011357806390e690c714610ab3578063aaf1fc6214610ac8578063ad95580b14610b79578063b242e53414610b8e578063be40ba7914610bc9578063beabacc814610bde57610288565b8063747c31d6146109b15780637b580e75146109c65780637d73b231146109f95780637fd004fa14610a0e578063877337b014610a895780638da5cb5b14610a9e57610288565b80633f579f42116101fe5780634d9aa248116101b75780634d9aa2481461085d5780635adc02ab146108725780636137d6701461089c57806369efdfc0146109175780636c37a7e614610972578063715018a61461099c57610288565b80633f579f4214610640578063458d07f21461070657806345b12efc1461073057806346efe0ed1461074557806347b55a9d1461081757806347d125af1461082c57610288565b80632121dc75116102505780632121dc751461052b57806326d05ab214610540578063294f40251461055557806332531c3c146105ba5780633a43199f146105ed5780633b8252fa1461061957610288565b806301ffc9a71461028d578063100f23fd146102d55780631127b57e146103015780631626ba7e1461038b57806320c13b0b14610460575b600080fd5b34801561029957600080fd5b506102c1600480360360208110156102b057600080fd5b50356001600160e01b031916610eb2565b604080519115158252519081900360200190f35b3480156102e157600080fd5b506102ff600480360360208110156102f857600080fd5b5035610ecc565b005b34801561030d57600080fd5b5061031661106c565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610350578181015183820152602001610338565b50505050905090810190601f16801561037d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039757600080fd5b50610443600480360360408110156103ae57600080fd5b81359190810190604081016020820135600160201b8111156103cf57600080fd5b8201836020820111156103e157600080fd5b803590602001918460018302840111600160201b8311171561040257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061108d945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561046c57600080fd5b506104436004803603604081101561048357600080fd5b810190602081018135600160201b81111561049d57600080fd5b8201836020820111156104af57600080fd5b803590602001918460018302840111600160201b831117156104d057600080fd5b919390929091602081019035600160201b8111156104ed57600080fd5b8201836020820111156104ff57600080fd5b803590602001918460018302840111600160201b8311171561052057600080fd5b5090925090506110fc565b34801561053757600080fd5b506102c16111d3565b34801561054c57600080fd5b506102c16111e4565b34801561056157600080fd5b5061056a6111ed565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105a657818101518382015260200161058e565b505050509050019250505060405180910390f35b3480156105c657600080fd5b506102c1600480360360208110156105dd57600080fd5b50356001600160a01b031661124f565b6102ff6004803603604081101561060357600080fd5b506001600160a01b038135169060200135611264565b34801561062557600080fd5b5061062e611483565b60408051918252519081900360200190f35b34801561064c57600080fd5b506103166004803603606081101561066357600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561069257600080fd5b8201836020820111156106a457600080fd5b803590602001918460018302840111600160201b831117156106c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611489945050505050565b34801561071257600080fd5b506102ff6004803603602081101561072957600080fd5b503561196a565b34801561073c57600080fd5b5061062e611a51565b34801561075157600080fd5b506102ff6004803603606081101561076857600080fd5b81359190810190604081016020820135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b919390929091602081019035600160201b8111156107d957600080fd5b8201836020820111156107eb57600080fd5b803590602001918460018302840111600160201b8311171561080c57600080fd5b509092509050611a6f565b34801561082357600080fd5b5061056a611e14565b34801561083857600080fd5b50610841611e74565b604080516001600160a01b039092168252519081900360200190f35b34801561086957600080fd5b5061062e611e83565b34801561087e57600080fd5b506102ff6004803603602081101561089557600080fd5b5035611e89565b3480156108a857600080fd5b506102ff600480360360208110156108bf57600080fd5b810190602081018135600160201b8111156108d957600080fd5b8201836020820111156108eb57600080fd5b803590602001918460208302840111600160201b8311171561090c57600080fd5b5090925090506121bd565b34801561092357600080fd5b506102ff600480360360e081101561093a57600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356123e4565b34801561097e57600080fd5b506102ff6004803603602081101561099557600080fd5b50356124c0565b3480156109a857600080fd5b506102ff612641565b3480156109bd57600080fd5b5061062e61273c565b3480156109d257600080fd5b506102ff600480360360208110156109e957600080fd5b50356001600160a01b0316612742565b348015610a0557600080fd5b5061084161290d565b348015610a1a57600080fd5b506102ff60048036036020811015610a3157600080fd5b810190602081018135600160201b811115610a4b57600080fd5b820183602082011115610a5d57600080fd5b803590602001918460208302840111600160201b83111715610a7e57600080fd5b50909250905061291c565b348015610a9557600080fd5b5061062e612c5f565b348015610aaa57600080fd5b50610841612c65565b348015610abf57600080fd5b506102ff612c74565b348015610ad457600080fd5b506102ff60048036036020811015610aeb57600080fd5b810190602081018135600160201b811115610b0557600080fd5b820183602082011115610b1757600080fd5b803590602001918460018302840111600160201b83111715610b3857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612cce945050505050565b348015610b8557600080fd5b506102ff612df0565b348015610b9a57600080fd5b506102ff60048036036040811015610bb157600080fd5b506001600160a01b0381351690602001351515612ef7565b348015610bd557600080fd5b506102c16130ae565b348015610bea57600080fd5b506102ff60048036036060811015610c0157600080fd5b506001600160a01b038135811691602081013590911690604001356130bd565b348015610c2d57600080fd5b506102ff60048036036020811015610c4457600080fd5b5035613231565b348015610c5757600080fd5b5061062e613625565b348015610c6c57600080fd5b5061062e60048036036020811015610c8357600080fd5b810190602081018135600160201b811115610c9d57600080fd5b820183602082011115610caf57600080fd5b803590602001918460208302840111600160201b83111715610cd057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061362b945050505050565b348015610d1a57600080fd5b506102ff60048036036020811015610d3157600080fd5b5035613685565b348015610d4457600080fd5b506102c1613829565b348015610d5957600080fd5b5061084160048036036020811015610d7057600080fd5b5035613839565b348015610d8357600080fd5b506102c1613860565b348015610d9857600080fd5b5061062e61386e565b348015610dad57600080fd5b506102ff60048036036020811015610dc457600080fd5b5035613874565b348015610dd757600080fd5b5061062e60048036036040811015610dee57600080fd5b506001600160a01b0381351690602001356139fe565b348015610e1057600080fd5b506102ff60048036036020811015610e2757600080fd5b810190602081018135600160201b811115610e4157600080fd5b820183602082011115610e5357600080fd5b803590602001918460208302840111600160201b83111715610e7457600080fd5b509092509050613b75565b348015610e8b57600080fd5b5061062e60048036036020811015610ea257600080fd5b50356001600160a01b0316613ec8565b6001600160e01b031981166301ffc9a760e01b145b919050565b610ed533613ed3565b80610ee45750610ee433613ee7565b610f29576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16610f78576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b610fdb6039805480602002602001604051908101604052809291908181526020018280548015610fd157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fb3575b505050505061362b565b81146110185760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b61102460396000615608565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b60008061109a8484613f23565b90506110a581613ed3565b6110ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611173945086935089915088908190840183828082843760009201919091525061108d92505050565b6001600160e01b031916146111bf576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561124557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611227575b5050505050905090565b60376020526000908152604090205460ff1681565b61126d33613ed3565b8061127757503330145b6112bc576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6112c58261410e565b61130b576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061131783836139fe565b905061132281614128565b600061132f6042546141c4565b90506001600160a01b038416156113c8576113546001600160a01b0385168285614317565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b50505050611439565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b606061149433613ed3565b8061149e57503330145b6114e3576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff1661151d5760006115106000856139fe565b905061151b81614128565b505b61152f846001600160a01b031661442f565b801561153f575061153f84614435565b1561170f57600080611551868561444f565b6001600160a01b038216600090815260376020526040902054919350915060ff1661158f57600061158287836139fe565b905061158d81614128565b505b6115a26001600160a01b03871685614550565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f815181106115d557fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561166757818101518382015260200161164f565b50505050905090810190601f1680156116945780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156116c75781810151838201526020016116af565b50505050905090810190601f1680156116f45780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611963915050565b60006060856001600160a01b031685856040518082805190602001908083835b6020831061174e5780518252601f19909201916020918201910161172f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146117b0576040519150601f19603f3d011682016040523d82523d6000602084013e6117b5565b606091505b50915091508181906118455760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561180a5781810151838201526020016117f2565b50505050905090810190601f1680156118375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156118c15781810151838201526020016118a9565b50505050905090810190601f1680156118ee5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611921578181015183820152602001611909565b50505050905090810190601f16801561194e5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b61197333613ed3565b8061197d57503330145b6119c2576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611a1a57603e54811015611a0c57603e81905560408054815183815260208101919091528151600080516020615764833981519152929181900390910190a15b611a1581614601565b611a4e565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611a665750603d546111e1565b50603e546111e1565b603554600160a81b900460ff1615611adb57611a8a33614644565b611ad6576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b611b24565b6036546001600160a01b03163314611b245760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b60004690506000611b9b823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b815260140184815260200183838082843780830192505050955050505050506040516020818303038152906040528051906020012061469d565b9050631626ba7e60e01b6001600160e01b031916611bef8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061108d92505050565b6001600160e01b03191614611c3b576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6041548714611c7d576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b611c856146ee565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611ce5576040519150601f19603f3d011682016040523d82523d6000602084013e611cea565b606091505b5091509150818190611d3d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611dcc578181015183820152602001611db4565b50505050905090810190601f168015611df95780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611245576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611227575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160a81b900460ff1615611ef557611ea433614644565b611ef0576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b611f3e565b6036546001600160a01b03163314611f3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b603b5460ff16611f8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611fee6039805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b811461202b5760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b60005b60395481101561211257603760006039838154811061204957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1661210a576001603760006039848154811061208857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556039805460389190839081106120ce57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b60010161202e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561219557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612177575b5050935050505060405180910390a16121b060396000615608565b50603b805460ff19169055565b6121c633613ed3565b806121d057503330145b612215576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156122305750603b54610100900460ff16155b612281576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166122da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061231e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61232a603a8383615626565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926123999285918591829185019084908082843760009201919091525061362b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806123fd57506123fd614736565b8061240b575060005460ff16155b6124465760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015612471576000805460ff1961ff0019909116610100171660011790555b61247961473c565b612482866147f0565b61248b846148be565b612495888861496b565b61249f8286614aca565b604283905580156124b6576000805461ff00191690555b5050505050505050565b603554600160a81b900460ff161561252c576124db33614644565b612527576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b612575565b6036546001600160a01b031633146125755760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b80603f54146125b55760405162461bcd60e51b81526004018080602001828103825260258152602001806157f56025913960400191505060405180910390fd5b603d5481116125f55760405162461bcd60e51b81526004018080602001828103825260288152602001806156be6028913960400191505060405180910390fd5b603e8190556126074262015180614c2c565b6040818155603e548151908152602081019290925280516000805160206157648339815191529281900390910190a1611a4e603f54614601565b61264a33613ed3565b612691576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166126ef576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61274b33613ed3565b612792576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6001600160a01b0381166127ed576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612846576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b0381163014156128a4576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60a81b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61292533613ed3565b8061292f57503330145b612974576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff1615801561298f5750603b54610100900460ff16155b6129e0576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612afc57612a39828281518110612a2c57fe5b6020026020010151613ed3565b15612a84576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612a9b57fe5b60200260200101516001600160a01b03161415612af4576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612a14565b50603b5462010000900460ff16612b56576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612b9a576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ba660398484615626565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612c139285918591829185019084908082843760009201919091525061362b92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612c7d33613ed3565b612cc4576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612ccc6146ee565b565b612cd733613ed3565b80612ce157503330145b612d26576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156124b657612d49866054614c86565b888601805160148201516034909201805193995060609190911c96509094509092509050612d826054612d7c8785614c2c565b90614c2c565b945086851115612dc9576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612ddf57506040805160208101909152600081525b612dea848483611489565b50612d36565b612df933613ed3565b612e40576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a81b900460ff1615612e9f576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60a81b1916600160a81b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612f0033613ed3565b612f47576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612fa5576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612fea5760405162461bcd60e51b815260040180806020018281038252602381526020018061581a6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061304357604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b6130c633613ed3565b806130d057503330145b613115576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080613152576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b03841661319d576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff166131d65760006131c984846139fe565b90506131d481614128565b505b6131e1848484614cc8565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160a81b900460ff161561329d5761324c33614644565b613298576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6132e6565b6036546001600160a01b031633146132e65760405162461bcd60e51b81526004018080602001828103825260228152602001806156e66022913960400191505060405180910390fd5b603b54610100900460ff1661333a576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61339b603a805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b81146133d85760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b60005b603a548110156135795760376000603a83815481106133f657fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561357157600060376000603a848154811061343657fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b60385461347a906001614c86565b81101561354257603a828154811061348e57fe5b600091825260209091200154603880546001600160a01b0390921691839081106134b457fe5b6000918252602090912001546001600160a01b0316141561353a576038805460001981019081106134e157fe5b600091825260209091200154603880546001600160a01b03909216918390811061350757fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613542565b60010161346c565b50603880548061354e57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b6001016133db565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156135fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116135de575b5050935050505060405180910390a1613617603a6000615608565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b8381101561365e578181015183820152602001613646565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61368e33613ed3565b8061369d575061369d33613ee7565b6136e2576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff16613736576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613797603a805480602002602001604051908101604052809291908181526020018280548015610fd1576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fb357505050505061362b565b81146137d45760405162461bcd60e51b81526004018080602001828103825260238152602001806158676023913960400191505060405180910390fd5b6137e0603a6000615608565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b6038818154811061384657fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b80806138b1576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6138ba33613ed3565b806138c957506138c933613ee7565b61390e576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b81471161395b576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61396482614128565b61396c612c65565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156139a4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336139cf612c65565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613a08614d02565b6001600160a01b0316836001600160a01b03161415613a285750806110f6565b816001600160a01b03841615613ab7576000806000613a4687614d78565b5050509350935093505080613a625760009450505050506110f6565b81613a9d576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613ab183613aab8885614f01565b90614f5a565b93505050505b6000806000613ac4614f9c565b5050509350935093505080613b16576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613b5c576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613b6a82613aab8686614f01565b979650505050505050565b613b7e33613ed3565b80613b8857503330145b613bcd576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613cdc57613c19828281518110612a2c57fe5b15613c64576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613c7b57fe5b60200260200101516001600160a01b03161415613cd4576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613c01565b50603b5462010000900460ff1615613d33576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613e245760376000858584818110613d4e57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613e1c57600160376000868685818110613d8a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613ddf57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613d36565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613eb457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e96575b5050935050505060405180910390a1505050565b60006110f68261510b565b6035546001600160a01b0390811691161490565b603554600090600160a81b900460ff1615613f0c57613f0582614644565b9050610ec7565b506036546001600160a01b03828116911614610ec7565b60008151604114613f7b576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613fec5760405162461bcd60e51b81526004018080602001828103825260228152602001806157426022913960400191505060405180910390fd5b8060ff16601b1415801561400457508060ff16601c14155b156140405760405162461bcd60e51b81526004018080602001828103825260228152602001806157846022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561409c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614104576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b60008061411a83614d78565b509098975050505050505050565b61413061519c565b80603e541015614187576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e546141949082614c86565b603e819055604080548151928352602083015280516000805160206157648339815191529281900390910190a150565b6033546000906001600160a01b0316614224576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561427057600080fd5b505afa158015614284573d6000803e3d6000fd5b505050506040513d602081101561429a57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156142e557600080fd5b505afa1580156142f9573d6000803e3d6000fd5b505050506040513d602081101561430f57600080fd5b505192915050565b80158061439d575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561436f57600080fd5b505afa158015614383573d6000803e3d6000fd5b505050506040513d602081101561439957600080fd5b5051155b6143d85760405162461bcd60e51b815260040180806020018281038252603681526020018061588a6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261442a908490614550565b505050565b3b151590565b60008061444183614d78565b509198975050505050505050565b60008061445d603c546141c4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156144c85781810151838201526020016144b0565b50505050905090810190601f1680156144f55780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561451257600080fd5b505afa158015614526573d6000803e3d6000fd5b505050506040513d604081101561453c57600080fd5b508051602090910151909590945092505050565b60606145a5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166151e99092919063ffffffff16565b80519091501561442a578080602001905160208110156145c457600080fd5b505161442a5760405162461bcd60e51b815260040180806020018281038252602a81526020018061583d602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b60006146516034546141c4565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156142e557600080fd5b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b303b1590565b600054610100900460ff16806147555750614755614736565b80614763575060005460ff16155b61479e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff161580156147c9576000805460ff1961ff0019909116610100171660011790555b6035805460ff60a81b1916600160a81b1790558015611a4e576000805461ff001916905550565b600054610100900460ff16806148095750614809614736565b80614817575060005460ff16155b6148525760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff1615801561487d576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156148a857603380546001600160a01b0319166001600160a01b0384161790555b80156148ba576000805461ff00191690555b5050565b600054610100900460ff16806148d757506148d7614736565b806148e5575060005460ff16155b6149205760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff1615801561494b576000805460ff1961ff0019909116610100171660011790555b81156148a857603482905580156148ba576000805461ff00191690555050565b600054610100900460ff16806149845750614984614736565b80614992575060005460ff16155b6149cd5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff161580156149f8576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614a7057604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1801561442a576000805461ff0019169055505050565b600054610100900460ff1680614ae35750614ae3614736565b80614af1575060005460ff16155b614b2c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015614b57576000805460ff1961ff0019909116610100171660011790555b614b60826151f8565b6000614b6a614f9c565b505050505091505060008111614bb7576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614bd64262015180614c2c565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a15050801561442a576000805461ff0019169055505050565b600082820183811015611963576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061196383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506152a5565b6001600160a01b038216614cee57614ce96001600160a01b038416826152ff565b61442a565b61442a6001600160a01b03831684836153e4565b6000614d0f603c546141c4565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614d4757600080fd5b505afa158015614d5b573d6000803e3d6000fd5b505050506040513d6020811015614d7157600080fd5b5051905090565b6060600080600080600080614d8e603c546141c4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614dda57600080fd5b505afa158015614dee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614e1757600080fd5b8101908080516040519392919084600160201b821115614e3657600080fd5b908301906020820185811115614e4b57600080fd5b8251600160201b811182820188101715614e6457600080fd5b82525081516020918201929091019080838360005b83811015614e91578181015183820152602001614e79565b50505050905090810190601f168015614ebe5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614f10575060006110f6565b82820282848281614f1d57fe5b04146119635760405162461bcd60e51b81526004018080602001828103825260218152602001806157a66021913960400191505060405180910390fd5b600061196383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615436565b6060600080600080600080614fb2603c546141c4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b158015614fea57600080fd5b505afa158015614ffe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561502757600080fd5b8101908080516040519392919084600160201b82111561504657600080fd5b90830190602082018581111561505b57600080fd5b8251600160201b81118282018810171561507457600080fd5b82525081516020918201929091019080838360005b838110156150a1578181015183820152602001615089565b50505050905090810190601f1680156150ce5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561519557604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561516257600080fd5b505afa158015615176573d6000803e3d6000fd5b505050506040513d602081101561518c57600080fd5b50519050610ec7565b5047610ec7565b604054421115612ccc576151b34262015180614c2c565b6040818155603d54603e8190558151908152602081019290925280516000805160206157648339815191529281900390910190a1565b60606111cb848460008561549b565b600054610100900460ff16806152115750615211614736565b8061521f575060005460ff16155b61525a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806157c7602e913960400191505060405180910390fd5b600054610100900460ff16158015615285576000805460ff1961ff0019909116610100171660011790555b81156148a857603c82905580156148ba576000805461ff00191690555050565b600081848411156152f75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b505050900390565b80471015615354576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d806000811461539f576040519150601f19603f3d011682016040523d82523d6000602084013e6153a4565b606091505b505090508061442a5760405162461bcd60e51b815260040180806020018281038252603a815260200180615708603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261442a908490614550565b600081836154855760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561180a5781810151838201526020016117f2565b50600083858161549157fe5b0495945050505050565b60606154a68561442f565b6154f7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106155365780518252601f199092019160209182019101615517565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615598576040519150601f19603f3d011682016040523d82523d6000602084013e61559d565b606091505b509150915081156155b15791506111cb9050565b8051156155c15780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561180a5781810151838201526020016117f2565b5080546000825590600052602060002090810190611a4e9190615689565b828054828255906000526020600020908101928215615679579160200282015b828111156156795781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615646565b5061568592915061569e565b5090565b5b80821115615685576000815560010161568a565b5b808211156156855780546001600160a01b031916815560010161569f56fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212209248034679cfcbfce5a6a08348a59eb551c53f047393fa07dd5058ce7f5aa1d264736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b50615bae806200008a6000396000f3fe6080604052600436106102ae5760003560e01c80637b580e7511610175578063cbd2ac68116100dc578063d251fefc11610095578063e61c51ca1161006f578063e61c51ca14610eae578063f36febda14610ed8578063f421764814610f11578063f8b2cb4f14610f8c576102ae565b8063d251fefc14610e5a578063de212bf314610e84578063e2b4ce9714610e99576102ae565b8063cbd2ac6814610d19578063cccdc55614610d43578063cd7958dd14610d58578063ce0b5bd514610e06578063ced99cce14610e30578063cf0a866b14610e45576102ae565b8063aaf1fc621161012e578063aaf1fc6214610aee578063ad95580b14610b9f578063b242e53414610bb4578063be40ba7914610bef578063beabacc814610c04578063c1e559a314610c47576102ae565b80637b580e75146109ec5780637d73b23114610a1f5780637fd004fa14610a34578063877337b014610aaf5780638da5cb5b14610ac457806390e690c714610ad9576102ae565b8063458d07f2116102195780635adc02ab116101d25780635adc02ab146108985780636137d670146108c257806369efdfc01461093d5780636c37a7e614610998578063715018a6146109c2578063747c31d6146109d7576102ae565b8063458d07f21461072c57806345b12efc1461075657806346efe0ed1461076b57806347b55a9d1461083d57806347d125af146108525780634d9aa24814610883576102ae565b806326d05ab21161026b57806326d05ab214610566578063294f40251461057b57806332531c3c146105e05780633a43199f146106135780633b8252fa1461063f5780633f579f4214610666576102ae565b806301ffc9a7146102b3578063100f23fd146102fb5780631127b57e146103275780631626ba7e146103b157806320c13b0b146104865780632121dc7514610551575b600080fd5b3480156102bf57600080fd5b506102e7600480360360208110156102d657600080fd5b50356001600160e01b031916610fbf565b604080519115158252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b5035610fd9565b005b34801561033357600080fd5b5061033c611179565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561037657818101518382015260200161035e565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103bd57600080fd5b50610469600480360360408110156103d457600080fd5b81359190810190604081016020820135600160201b8111156103f557600080fd5b82018360208201111561040757600080fd5b803590602001918460018302840111600160201b8311171561042857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061119a945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561049257600080fd5b50610469600480360360408110156104a957600080fd5b810190602081018135600160201b8111156104c357600080fd5b8201836020820111156104d557600080fd5b803590602001918460018302840111600160201b831117156104f657600080fd5b919390929091602081019035600160201b81111561051357600080fd5b82018360208201111561052557600080fd5b803590602001918460018302840111600160201b8311171561054657600080fd5b509092509050611209565b34801561055d57600080fd5b506102e76112e0565b34801561057257600080fd5b506102e76112f1565b34801561058757600080fd5b506105906112fa565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105cc5781810151838201526020016105b4565b505050509050019250505060405180910390f35b3480156105ec57600080fd5b506102e76004803603602081101561060357600080fd5b50356001600160a01b031661135c565b6103256004803603604081101561062957600080fd5b506001600160a01b038135169060200135611371565b34801561064b57600080fd5b50610654611590565b60408051918252519081900360200190f35b34801561067257600080fd5b5061033c6004803603606081101561068957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156106b857600080fd5b8201836020820111156106ca57600080fd5b803590602001918460018302840111600160201b831117156106eb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611596945050505050565b34801561073857600080fd5b506103256004803603602081101561074f57600080fd5b5035611aac565b34801561076257600080fd5b50610654611b93565b34801561077757600080fd5b506103256004803603606081101561078e57600080fd5b81359190810190604081016020820135600160201b8111156107af57600080fd5b8201836020820111156107c157600080fd5b803590602001918460018302840111600160201b831117156107e257600080fd5b919390929091602081019035600160201b8111156107ff57600080fd5b82018360208201111561081157600080fd5b803590602001918460018302840111600160201b8311171561083257600080fd5b509092509050611bb1565b34801561084957600080fd5b50610590611c21565b34801561085e57600080fd5b50610867611c81565b604080516001600160a01b039092168252519081900360200190f35b34801561088f57600080fd5b50610654611c90565b3480156108a457600080fd5b50610325600480360360208110156108bb57600080fd5b5035611c96565b3480156108ce57600080fd5b50610325600480360360208110156108e557600080fd5b810190602081018135600160201b8111156108ff57600080fd5b82018360208201111561091157600080fd5b803590602001918460208302840111600160201b8311171561093257600080fd5b509092509050611fbd565b34801561094957600080fd5b50610325600480360360e081101561096057600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356121e4565b3480156109a457600080fd5b50610325600480360360208110156109bb57600080fd5b50356122c0565b3480156109ce57600080fd5b50610325612434565b3480156109e357600080fd5b5061065461252f565b3480156109f857600080fd5b5061032560048036036020811015610a0f57600080fd5b50356001600160a01b0316612535565b348015610a2b57600080fd5b50610867612748565b348015610a4057600080fd5b5061032560048036036020811015610a5757600080fd5b810190602081018135600160201b811115610a7157600080fd5b820183602082011115610a8357600080fd5b803590602001918460208302840111600160201b83111715610aa457600080fd5b509092509050612757565b348015610abb57600080fd5b50610654612a9a565b348015610ad057600080fd5b50610867612aa0565b348015610ae557600080fd5b50610325612aaf565b348015610afa57600080fd5b5061032560048036036020811015610b1157600080fd5b810190602081018135600160201b811115610b2b57600080fd5b820183602082011115610b3d57600080fd5b803590602001918460018302840111600160201b83111715610b5e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612b09945050505050565b348015610bab57600080fd5b50610325612c30565b348015610bc057600080fd5b5061032560048036036040811015610bd757600080fd5b506001600160a01b0381351690602001351515612d37565b348015610bfb57600080fd5b506102e7612eee565b348015610c1057600080fd5b5061032560048036036060811015610c2757600080fd5b506001600160a01b03813581169160208101359091169060400135612efd565b348015610c5357600080fd5b5061032560048036036060811015610c6a57600080fd5b81359190810190604081016020820135600160201b811115610c8b57600080fd5b820183602082011115610c9d57600080fd5b803590602001918460018302840111600160201b83111715610cbe57600080fd5b919390929091602081019035600160201b811115610cdb57600080fd5b820183602082011115610ced57600080fd5b803590602001918460018302840111600160201b83111715610d0e57600080fd5b509092509050613089565b348015610d2557600080fd5b5061032560048036036020811015610d3c57600080fd5b5035613140565b348015610d4f57600080fd5b50610654613527565b348015610d6457600080fd5b5061065460048036036020811015610d7b57600080fd5b810190602081018135600160201b811115610d9557600080fd5b820183602082011115610da757600080fd5b803590602001918460208302840111600160201b83111715610dc857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061352d945050505050565b348015610e1257600080fd5b5061032560048036036020811015610e2957600080fd5b5035613587565b348015610e3c57600080fd5b506102e761372b565b348015610e5157600080fd5b506102e761373b565b348015610e6657600080fd5b5061086760048036036020811015610e7d57600080fd5b503561374b565b348015610e9057600080fd5b506102e7613772565b348015610ea557600080fd5b50610654613780565b348015610eba57600080fd5b5061032560048036036020811015610ed157600080fd5b5035613786565b348015610ee457600080fd5b5061065460048036036040811015610efb57600080fd5b506001600160a01b038135169060200135613910565b348015610f1d57600080fd5b5061032560048036036020811015610f3457600080fd5b810190602081018135600160201b811115610f4e57600080fd5b820183602082011115610f6057600080fd5b803590602001918460208302840111600160201b83111715610f8157600080fd5b509092509050613a87565b348015610f9857600080fd5b5061065460048036036020811015610faf57600080fd5b50356001600160a01b0316613dda565b6001600160e01b031981166301ffc9a760e01b145b919050565b610fe233613de5565b80610ff15750610ff133613df9565b611036576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16611085576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6110e860398054806020026020016040519081016040528092919081815260200182805480156110de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c0575b505050505061352d565b81146111255760405162461bcd60e51b8152600401808060200182810382526023815260200180615b206023913960400191505060405180910390fd5b61113160396000615872565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806111a78484613e35565b90506111b281613de5565b6111f7576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611280945086935089915088908190840183828082843760009201919091525061119a92505050565b6001600160e01b031916146112cc576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561135257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611334575b5050505050905090565b60376020526000908152604090205460ff1681565b61137a33613de5565b8061138457503330145b6113c9576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6113d282614020565b611418576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006114248383613910565b905061142f8161403a565b600061143c6042546140d6565b90506001600160a01b038416156114d5576114616001600160a01b0385168285614229565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156114b857600080fd5b505af11580156114cc573d6000803e3d6000fd5b50505050611546565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561152c57600080fd5b505af1158015611540573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b60606115a133613de5565b806115b057506115b033613df9565b6115f5576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff161580156116285750603554600160a81b900460ff16155b1561164757600061163a600085613910565b90506116458161403a565b505b611659846001600160a01b0316614341565b8015611669575061166984614347565b156118515760008061167b8685614361565b6001600160a01b038216600090815260376020526040902054919350915060ff161580156116b35750603554600160a81b900460ff16155b156116d15760006116c48783613910565b90506116cf8161403a565b505b6116e46001600160a01b03871685614462565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061171757fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156117a9578181015183820152602001611791565b50505050905090810190601f1680156117d65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156118095781810151838201526020016117f1565b50505050905090810190601f1680156118365780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611aa5915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106118905780518252601f199092019160209182019101611871565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50915091508181906119875760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561194c578181015183820152602001611934565b50505050905090810190601f1680156119795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611a035781810151838201526020016119eb565b50505050905090810190601f168015611a305780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a63578181015183820152602001611a4b565b50505050905090810190601f168015611a905780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b611ab533613de5565b80611abf57503330145b611b04576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611b5c57603e54811015611b4e57603e819055604080548151838152602081019190915281516000805160206159ee833981519152929181900390910190a15b611b5781614513565b611b90565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611ba85750603d546112ee565b50603e546112ee565b611bba33614556565b611c0b576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b611c1a858585858560006145af565b5050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611352576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611334575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160b01b900460ff1615611cf557611cb133614556565b611cf0576040805162461bcd60e51b815260206004820152601c6024820152600080516020615950833981519152604482015290519081900360640190fd5b611d3e565b6036546001600160a01b03163314611d3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806159706022913960400191505060405180910390fd5b603b5460ff16611d8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611dee60398054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c057505050505061352d565b8114611e2b5760405162461bcd60e51b8152600401808060200182810382526023815260200180615b206023913960400191505060405180910390fd5b60005b603954811015611f12576037600060398381548110611e4957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611f0a5760016037600060398481548110611e8857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603980546038919083908110611ece57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611e2e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b03168152602001806020018281038252838181548152602001915080548015611f9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f77575b5050935050505060405180910390a1611fb060396000615872565b50603b805460ff19169055565b611fc633613de5565b80611fd057503330145b612015576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156120305750603b54610100900460ff16155b612081576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166120da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061211e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61212a603a8383615890565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926121999285918591829185019084908082843760009201919091525061352d92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806121fd57506121fd614907565b8061220b575060005460ff16155b6122465760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015612271576000805460ff1961ff0019909116610100171660011790555b61227961490d565b612282866149c1565b61228b84614a8f565b6122958888614b3c565b61229f8286614c9b565b604283905580156122b6576000805461ff00191690555b5050505050505050565b603554600160b01b900460ff161561231f576122db33614556565b61231a576040805162461bcd60e51b815260206004820152601c6024820152600080516020615950833981519152604482015290519081900360640190fd5b612368565b6036546001600160a01b031633146123685760405162461bcd60e51b81526004018080602001828103825260228152602001806159706022913960400191505060405180910390fd5b80603f54146123a85760405162461bcd60e51b8152600401808060200182810382526025815260200180615aae6025913960400191505060405180910390fd5b603d5481116123e85760405162461bcd60e51b81526004018080602001828103825260288152602001806159286028913960400191505060405180910390fd5b603e8190556123fa4262015180614dfd565b6040818155603e548151908152602081019290925280516000805160206159ee8339815191529281900390910190a1611b90603f54614513565b61243d33613de5565b612484576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166124e2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61253e33613de5565b612585576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a81b900460ff166125cd5760405162461bcd60e51b815260040180806020018281038252602f815260200180615a7f602f913960400191505060405180910390fd5b6001600160a01b038116612628576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612681576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b0381163014156126df576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60b01b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61276033613de5565b8061276a57503330145b6127af576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156127ca5750603b54610100900460ff16155b61281b576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156129375761287482828151811061286757fe5b6020026020010151613de5565b156128bf576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106128d657fe5b60200260200101516001600160a01b0316141561292f576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161284f565b50603b5462010000900460ff16612991576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b816129d5576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6129e160398484615890565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612a4e9285918591829185019084908082843760009201919091525061352d92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612ab833613de5565b612aff576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612b07614e57565b565b612b1233613de5565b80612b215750612b2133613df9565b612b66576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156122b657612b89866054614e9f565b888601805160148201516034909201805193995060609190911c96509094509092509050612bc26054612bbc8785614dfd565b90614dfd565b945086851115612c09576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612c1f57506040805160208101909152600081525b612c2a848483611596565b50612b76565b612c3933613de5565b612c80576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160b01b900460ff1615612cdf576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60b01b1916600160b01b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612d4033613de5565b612d87576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612de5576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612e2a5760405162461bcd60e51b8152600401808060200182810382526023815260200180615ad36023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612e8357604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b612f0633613de5565b80612f1057503330145b612f55576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080612f92576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612fdd576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff161580156130105750603554600160a81b900460ff16155b1561302e5760006130218484613910565b905061302c8161403a565b505b613039848484614ee1565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160b01b900460ff16156130e8576130a433614556565b6130e3576040805162461bcd60e51b815260206004820152601c6024820152600080516020615950833981519152604482015290519081900360640190fd5b613131565b6036546001600160a01b031633146131315760405162461bcd60e51b81526004018080602001828103825260228152602001806159706022913960400191505060405180910390fd5b611c1a858585858560016145af565b603554600160b01b900460ff161561319f5761315b33614556565b61319a576040805162461bcd60e51b815260206004820152601c6024820152600080516020615950833981519152604482015290519081900360640190fd5b6131e8565b6036546001600160a01b031633146131e85760405162461bcd60e51b81526004018080602001828103825260228152602001806159706022913960400191505060405180910390fd5b603b54610100900460ff1661323c576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61329d603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c057505050505061352d565b81146132da5760405162461bcd60e51b8152600401808060200182810382526023815260200180615b206023913960400191505060405180910390fd5b60005b603a5481101561347b5760376000603a83815481106132f857fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561347357600060376000603a848154811061333857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b60385461337c906001614e9f565b81101561344457603a828154811061339057fe5b600091825260209091200154603880546001600160a01b0390921691839081106133b657fe5b6000918252602090912001546001600160a01b0316141561343c576038805460001981019081106133e357fe5b600091825260209091200154603880546001600160a01b03909216918390811061340957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613444565b60010161336e565b50603880548061345057fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b6001016132dd565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156134fe57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116134e0575b5050935050505060405180910390a1613519603a6000615872565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b83811015613560578181015183820152602001613548565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61359033613de5565b8061359f575061359f33613df9565b6135e4576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff16613638576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613699603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c057505050505061352d565b81146136d65760405162461bcd60e51b8152600401808060200182810382526023815260200180615b206023913960400191505060405180910390fd5b6136e2603a6000615872565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b603554600160b01b900460ff1681565b6038818154811061375857fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b80806137c3576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6137cc33613de5565b806137db57506137db33613df9565b613820576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b81471161386d576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b6138768261403a565b61387e612aa0565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156138b6573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336138e1612aa0565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b600061391a614f1b565b6001600160a01b0316836001600160a01b0316141561393a575080611203565b816001600160a01b038416156139c957600080600061395887614f91565b5050509350935093505080613974576000945050505050611203565b816139af576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6139c3836139bd888561511a565b90615173565b93505050505b60008060006139d66151b5565b5050509350935093505080613a28576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613a6e576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613a7c826139bd868661511a565b979650505050505050565b613a9033613de5565b80613a9a57503330145b613adf576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613bee57613b2b82828151811061286757fe5b15613b76576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613b8d57fe5b60200260200101516001600160a01b03161415613be6576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613b13565b50603b5462010000900460ff1615613c45576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613d365760376000858584818110613c6057fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613d2e57600160376000868685818110613c9c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613cf157fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613c48565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613dc657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613da8575b5050935050505060405180910390a1505050565b600061120382615324565b6035546001600160a01b0390811691161490565b603554600090600160b01b900460ff1615613e1e57613e1782614556565b9050610fd4565b506036546001600160a01b03828116911614610fd4565b60008151604114613e8d576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613efe5760405162461bcd60e51b81526004018080602001828103825260228152602001806159cc6022913960400191505060405180910390fd5b8060ff16601b14158015613f1657508060ff16601c14155b15613f525760405162461bcd60e51b8152600401808060200182810382526022815260200180615a0e6022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613fae573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614016576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b60008061402c83614f91565b509098975050505050505050565b6140426153b5565b80603e541015614099576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e546140a69082614e9f565b603e819055604080548151928352602083015280516000805160206159ee8339815191529281900390910190a150565b6033546000906001600160a01b0316614136576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561418257600080fd5b505afa158015614196573d6000803e3d6000fd5b505050506040513d60208110156141ac57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156141f757600080fd5b505afa15801561420b573d6000803e3d6000fd5b505050506040513d602081101561422157600080fd5b505192915050565b8015806142af575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561428157600080fd5b505afa158015614295573d6000803e3d6000fd5b505050506040513d60208110156142ab57600080fd5b5051155b6142ea5760405162461bcd60e51b8152600401808060200182810382526036815260200180615b436036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261433c908490614462565b505050565b3b151590565b60008061435383614f91565b509198975050505050505050565b60008061436f603c546140d6565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156143da5781810151838201526020016143c2565b50505050905090810190601f1680156144075780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561442457600080fd5b505afa158015614438573d6000803e3d6000fd5b505050506040513d604081101561444e57600080fd5b508051602090910151909590945092505050565b60606144b7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166154029092919063ffffffff16565b80519091501561433c578080602001905160208110156144d657600080fd5b505161433c5760405162461bcd60e51b815260040180806020018281038252602a815260200180615af6602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b60006145636034546140d6565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156141f757600080fd5b6000469050600061462682308a8a8a60405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120615411565b9050631626ba7e60e01b6001600160e01b03191661467a8287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119a92505050565b6001600160e01b031916146146c6576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6041548814614708576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b614710614e57565b6035805460ff60a81b1916600160a81b85151502179055604080516020601f8901819004810282018101909252878152614764918990899081908401838280828437600092019190915250612b0992505050565b6035805460ff60a81b1916905560405160009060609030908a908a90808383808284376040519201945060009350909150508083038183865af19150503d80600081146147cd576040519150601f19603f3d011682016040523d82523d6000602084013e6147d2565b606091505b50915091508181906148255760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b507f7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec89898388604051808060200180602001841515815260200183810383528787828181526020019250808284376000838201819052601f909101601f191690920185810384528751815287516020918201939189019250908190849084905b838110156148bd5781810151838201526020016148a5565b50505050905090810190601f1680156148ea5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a150505050505050505050565b303b1590565b600054610100900460ff16806149265750614926614907565b80614934575060005460ff16155b61496f5760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff1615801561499a576000805460ff1961ff0019909116610100171660011790555b6035805460ff60b01b1916600160b01b1790558015611b90576000805461ff001916905550565b600054610100900460ff16806149da57506149da614907565b806149e8575060005460ff16155b614a235760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015614a4e576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615614a7957603380546001600160a01b0319166001600160a01b0384161790555b8015614a8b576000805461ff00191690555b5050565b600054610100900460ff1680614aa85750614aa8614907565b80614ab6575060005460ff16155b614af15760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015614b1c576000805460ff1961ff0019909116610100171660011790555b8115614a795760348290558015614a8b576000805461ff00191690555050565b600054610100900460ff1680614b555750614b55614907565b80614b63575060005460ff16155b614b9e5760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015614bc9576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614c4157604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1801561433c576000805461ff0019169055505050565b600054610100900460ff1680614cb45750614cb4614907565b80614cc2575060005460ff16155b614cfd5760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015614d28576000805460ff1961ff0019909116610100171660011790555b614d3182615462565b6000614d3b6151b5565b505050505091505060008111614d88576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614da74262015180614dfd565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a15050801561433c576000805461ff0019169055505050565b600082820183811015611aa5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b6000611aa583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061550f565b6001600160a01b038216614f0757614f026001600160a01b03841682615569565b61433c565b61433c6001600160a01b038316848361564e565b6000614f28603c546140d6565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614f6057600080fd5b505afa158015614f74573d6000803e3d6000fd5b505050506040513d6020811015614f8a57600080fd5b5051905090565b6060600080600080600080614fa7603c546140d6565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614ff357600080fd5b505afa158015615007573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561503057600080fd5b8101908080516040519392919084600160201b82111561504f57600080fd5b90830190602082018581111561506457600080fd5b8251600160201b81118282018810171561507d57600080fd5b82525081516020918201929091019080838360005b838110156150aa578181015183820152602001615092565b50505050905090810190601f1680156150d75780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261512957506000611203565b8282028284828161513657fe5b0414611aa55760405162461bcd60e51b8152600401808060200182810382526021815260200180615a306021913960400191505060405180910390fd5b6000611aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506156a0565b60606000806000806000806151cb603c546140d6565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561520357600080fd5b505afa158015615217573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561524057600080fd5b8101908080516040519392919084600160201b82111561525f57600080fd5b90830190602082018581111561527457600080fd5b8251600160201b81118282018810171561528d57600080fd5b82525081516020918201929091019080838360005b838110156152ba5781810151838201526020016152a2565b50505050905090810190601f1680156152e75780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b038216156153ae57604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561537b57600080fd5b505afa15801561538f573d6000803e3d6000fd5b505050506040513d60208110156153a557600080fd5b50519050610fd4565b5047610fd4565b604054421115612b07576153cc4262015180614dfd565b6040818155603d54603e8190558151908152602081019290925280516000805160206159ee8339815191529281900390910190a1565b60606112d88484600085615705565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600054610100900460ff168061547b575061547b614907565b80615489575060005460ff16155b6154c45760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff161580156154ef576000805460ff1961ff0019909116610100171660011790555b8115614a7957603c8290558015614a8b576000805461ff00191690555050565b600081848411156155615760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b505050900390565b804710156155be576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114615609576040519150601f19603f3d011682016040523d82523d6000602084013e61560e565b606091505b505090508061433c5760405162461bcd60e51b815260040180806020018281038252603a815260200180615992603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261433c908490614462565b600081836156ef5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b5060008385816156fb57fe5b0495945050505050565b606061571085614341565b615761576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106157a05780518252601f199092019160209182019101615781565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615802576040519150601f19603f3d011682016040523d82523d6000602084013e615807565b606091505b5091509150811561581b5791506112d89050565b80511561582b5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561194c578181015183820152602001611934565b5080546000825590600052602060002090810190611b9091906158f3565b8280548282559060005260206000209081019282156158e3579160200282015b828111156158e35781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906158b0565b506158ef929150615908565b5090565b5b808211156158ef57600081556001016158f4565b5b808211156158ef5780546001600160a01b031916815560010161590956fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f742061204d6f6e6f6c697468203246410000000073656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656453657474696e67206120706572736f6e616c203246412072657175697265732070726976696c65676564206d6f6465636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220ce1c1e207b322c748ee52c4c84c45f11bab8722d23f19c40dad6b2b387939cc464736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { @@ -683,6 +683,32 @@ func (_Wallet *WalletCallerSession) Personal2FA() (common.Address, error) { return _Wallet.Contract.Personal2FA(&_Wallet.CallOpts) } +// Privileged is a free data retrieval call binding the contract method 0xced99cce. +// +// Solidity: function privileged() constant returns(bool) +func (_Wallet *WalletCaller) Privileged(opts *bind.CallOpts) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _Wallet.contract.Call(opts, out, "privileged") + return *ret0, err +} + +// Privileged is a free data retrieval call binding the contract method 0xced99cce. +// +// Solidity: function privileged() constant returns(bool) +func (_Wallet *WalletSession) Privileged() (bool, error) { + return _Wallet.Contract.Privileged(&_Wallet.CallOpts) +} + +// Privileged is a free data retrieval call binding the contract method 0xced99cce. +// +// Solidity: function privileged() constant returns(bool) +func (_Wallet *WalletCallerSession) Privileged() (bool, error) { + return _Wallet.Contract.Privileged(&_Wallet.CallOpts) +} + // RelayNonce is a free data retrieval call binding the contract method 0xcccdc556. // // Solidity: function relayNonce() constant returns(uint256) @@ -991,6 +1017,27 @@ func (_Wallet *WalletTransactorSession) ConfirmWhitelistRemoval(_hash [32]byte) return _Wallet.Contract.ConfirmWhitelistRemoval(&_Wallet.TransactOpts, _hash) } +// ExecutePrivilegedRelayedTransaction is a paid mutator transaction binding the contract method 0xc1e559a3. +// +// Solidity: function executePrivilegedRelayedTransaction(uint256 _nonce, bytes _data, bytes _signature) returns() +func (_Wallet *WalletTransactor) ExecutePrivilegedRelayedTransaction(opts *bind.TransactOpts, _nonce *big.Int, _data []byte, _signature []byte) (*types.Transaction, error) { + return _Wallet.contract.Transact(opts, "executePrivilegedRelayedTransaction", _nonce, _data, _signature) +} + +// ExecutePrivilegedRelayedTransaction is a paid mutator transaction binding the contract method 0xc1e559a3. +// +// Solidity: function executePrivilegedRelayedTransaction(uint256 _nonce, bytes _data, bytes _signature) returns() +func (_Wallet *WalletSession) ExecutePrivilegedRelayedTransaction(_nonce *big.Int, _data []byte, _signature []byte) (*types.Transaction, error) { + return _Wallet.Contract.ExecutePrivilegedRelayedTransaction(&_Wallet.TransactOpts, _nonce, _data, _signature) +} + +// ExecutePrivilegedRelayedTransaction is a paid mutator transaction binding the contract method 0xc1e559a3. +// +// Solidity: function executePrivilegedRelayedTransaction(uint256 _nonce, bytes _data, bytes _signature) returns() +func (_Wallet *WalletTransactorSession) ExecutePrivilegedRelayedTransaction(_nonce *big.Int, _data []byte, _signature []byte) (*types.Transaction, error) { + return _Wallet.Contract.ExecutePrivilegedRelayedTransaction(&_Wallet.TransactOpts, _nonce, _data, _signature) +} + // ExecuteRelayedTransaction is a paid mutator transaction binding the contract method 0x46efe0ed. // // Solidity: function executeRelayedTransaction(uint256 _nonce, bytes _data, bytes _signature) returns() @@ -1779,12 +1826,13 @@ func (it *WalletExecutedRelayedTransactionIterator) Close() error { type WalletExecutedRelayedTransaction struct { Data []byte ReturnData []byte + Privileged bool Raw types.Log // Blockchain specific contextual infos } -// FilterExecutedRelayedTransaction is a free log retrieval operation binding the contract event 0x823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c1. +// FilterExecutedRelayedTransaction is a free log retrieval operation binding the contract event 0x7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec. // -// Solidity: event ExecutedRelayedTransaction(bytes _data, bytes _returnData) +// Solidity: event ExecutedRelayedTransaction(bytes _data, bytes _returnData, bool _privileged) func (_Wallet *WalletFilterer) FilterExecutedRelayedTransaction(opts *bind.FilterOpts) (*WalletExecutedRelayedTransactionIterator, error) { logs, sub, err := _Wallet.contract.FilterLogs(opts, "ExecutedRelayedTransaction") @@ -1794,9 +1842,9 @@ func (_Wallet *WalletFilterer) FilterExecutedRelayedTransaction(opts *bind.Filte return &WalletExecutedRelayedTransactionIterator{contract: _Wallet.contract, event: "ExecutedRelayedTransaction", logs: logs, sub: sub}, nil } -// WatchExecutedRelayedTransaction is a free log subscription operation binding the contract event 0x823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c1. +// WatchExecutedRelayedTransaction is a free log subscription operation binding the contract event 0x7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec. // -// Solidity: event ExecutedRelayedTransaction(bytes _data, bytes _returnData) +// Solidity: event ExecutedRelayedTransaction(bytes _data, bytes _returnData, bool _privileged) func (_Wallet *WalletFilterer) WatchExecutedRelayedTransaction(opts *bind.WatchOpts, sink chan<- *WalletExecutedRelayedTransaction) (event.Subscription, error) { logs, sub, err := _Wallet.contract.WatchLogs(opts, "ExecutedRelayedTransaction") @@ -1831,9 +1879,9 @@ func (_Wallet *WalletFilterer) WatchExecutedRelayedTransaction(opts *bind.WatchO }), nil } -// ParseExecutedRelayedTransaction is a log parse operation binding the contract event 0x823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c1. +// ParseExecutedRelayedTransaction is a log parse operation binding the contract event 0x7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec. // -// Solidity: event ExecutedRelayedTransaction(bytes _data, bytes _returnData) +// Solidity: event ExecutedRelayedTransaction(bytes _data, bytes _returnData, bool _privileged) func (_Wallet *WalletFilterer) ParseExecutedRelayedTransaction(log types.Log) (*WalletExecutedRelayedTransaction, error) { event := new(WalletExecutedRelayedTransaction) if err := _Wallet.contract.UnpackLog(event, "ExecutedRelayedTransaction", log); err != nil { diff --git a/pkg/bindings/walletCache.go b/pkg/bindings/walletCache.go index 0737f6e1..725ba3b4 100644 --- a/pkg/bindings/walletCache.go +++ b/pkg/bindings/walletCache.go @@ -31,7 +31,7 @@ var ( const WalletCacheABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_walletImplementation_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_defaultDailyLimit_\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletDeployerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"addresspayable\",\"name\":\"_wallet\",\"type\":\"address\"}],\"name\":\"CachedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"cacheWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"cachedWallets\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cachedWalletsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultDailyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCachePop\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletDeployerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletCacheBin is the compiled bytecode used for deploying new contracts. -var WalletCacheBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306035557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966036557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386037553480156100c157600080fd5b50604051610c4e380380610c4e833981810160405260e08110156100e457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919061011a86610173565b61012384610241565b603880546001600160a01b0319166001600160a01b0389161790556039859055821561014f5760358390555b811561015b5760368290555b80156101675760378190555b505050505050506102f4565b600054610100900460ff168061018c575061018c6102ee565b8061019a575060005460ff16155b6101d55760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff16158015610200576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561022b57603380546001600160a01b0319166001600160a01b0384161790555b801561023d576000805461ff00191690555b5050565b600054610100900460ff168061025a575061025a6102ee565b80610268575060005460ff16155b6102a35760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff161580156102ce576000805460ff1961ff0019909116610100171660011790555b811561022b576034829055801561023d576000805461ff00191690555050565b303b1590565b61091d806103036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063877337b011610071578063877337b01461010657806387e8bed11461010e578063a4570e5114610116578063c76b08881461011e578063e2b4ce9714610126578063fc6cabe71461012e576100a9565b806360dbc5de146100ae57806371b9076a146100b8578063747c31d6146100d25780637d73b231146100da5780638117abc1146100fe575b600080fd5b6100b661014b565b005b6100c06102f5565b60408051918252519081900360200190f35b6100c06102fb565b6100e2610301565b604080516001600160a01b039092168252519081900360200190f35b6100e2610310565b6100c061031f565b6100c0610325565b6100e261032b565b6100c0610412565b6100c0610418565b6100e26004803603602081101561014457600080fd5b503561041e565b6000610158603754610445565b6038546040519192506000916001600160a01b039091169061017990610598565b6001600160a01b03909116815260406020820181905260008183018190529051918290036080019190f0801580156101b5573d6000803e3d6000fd5b509050806001600160a01b03166369efdfc08360016101d2610301565b6036546101dd610418565b6035546039546040518863ffffffff1660e01b815260040180886001600160a01b031681526020018715158152602001866001600160a01b03168152602001858152602001848152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b5050603a80546001810182556000919091527fa2999d817b6757290b50e8ecf3fa939673403dd35c97de392fdb343b4015ce9e0180546001600160a01b0385166001600160a01b0319909116811790915560408051918252517f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e9350908190036020019150a15050565b603a5490565b60355481565b6033546001600160a01b031690565b6038546001600160a01b031681565b60365481565b60375481565b6000610338603754610445565b6001600160a01b0316336001600160a01b03161461039d576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b603a54600111156103b0576103b061014b565b603a80546000919060001981019081106103c657fe5b600091825260209091200154603a80546001600160a01b03909216925090806103eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60395481565b60345490565b603a818154811061042b57fe5b6000918252602090912001546001600160a01b0316905081565b6033546000906001600160a01b03166104a5576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156104f157600080fd5b505afa158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d602081101561059057600080fd5b505192915050565b610342806105a68339019056fe60806040526040516103423803806103428339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610223565b6101be8161021d60201b61009a1760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610307603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b151590565b60d6806102316000396000f3fe6080604052366044576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b6050604c6052565b6077565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156095573d6000f35b3d6000fd5b3b15159056fea26469706673582212208ed6ffa1ceda73e7f2255c282c025b00bc31cb41fe1328bb37a62d3c6f61c36564736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220b9bcd9bc21ac048c7e2ea19d96e37dbf82e1ac9e74d2f3a6005c7c3f6a76b70d64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletCacheBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306035557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966036557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386037553480156100c157600080fd5b50604051610c4e380380610c4e833981810160405260e08110156100e457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919061011a86610173565b61012384610241565b603880546001600160a01b0319166001600160a01b0389161790556039859055821561014f5760358390555b811561015b5760368290555b80156101675760378190555b505050505050506102f4565b600054610100900460ff168061018c575061018c6102ee565b8061019a575060005460ff16155b6101d55760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff16158015610200576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561022b57603380546001600160a01b0319166001600160a01b0384161790555b801561023d576000805461ff00191690555b5050565b600054610100900460ff168061025a575061025a6102ee565b80610268575060005460ff16155b6102a35760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff161580156102ce576000805460ff1961ff0019909116610100171660011790555b811561022b576034829055801561023d576000805461ff00191690555050565b303b1590565b61091d806103036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063877337b011610071578063877337b01461010657806387e8bed11461010e578063a4570e5114610116578063c76b08881461011e578063e2b4ce9714610126578063fc6cabe71461012e576100a9565b806360dbc5de146100ae57806371b9076a146100b8578063747c31d6146100d25780637d73b231146100da5780638117abc1146100fe575b600080fd5b6100b661014b565b005b6100c06102f5565b60408051918252519081900360200190f35b6100c06102fb565b6100e2610301565b604080516001600160a01b039092168252519081900360200190f35b6100e2610310565b6100c061031f565b6100c0610325565b6100e261032b565b6100c0610412565b6100c0610418565b6100e26004803603602081101561014457600080fd5b503561041e565b6000610158603754610445565b6038546040519192506000916001600160a01b039091169061017990610598565b6001600160a01b03909116815260406020820181905260008183018190529051918290036080019190f0801580156101b5573d6000803e3d6000fd5b509050806001600160a01b03166369efdfc08360016101d2610301565b6036546101dd610418565b6035546039546040518863ffffffff1660e01b815260040180886001600160a01b031681526020018715158152602001866001600160a01b03168152602001858152602001848152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b5050603a80546001810182556000919091527fa2999d817b6757290b50e8ecf3fa939673403dd35c97de392fdb343b4015ce9e0180546001600160a01b0385166001600160a01b0319909116811790915560408051918252517f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e9350908190036020019150a15050565b603a5490565b60355481565b6033546001600160a01b031690565b6038546001600160a01b031681565b60365481565b60375481565b6000610338603754610445565b6001600160a01b0316336001600160a01b03161461039d576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b603a54600111156103b0576103b061014b565b603a80546000919060001981019081106103c657fe5b600091825260209091200154603a80546001600160a01b03909216925090806103eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60395481565b60345490565b603a818154811061042b57fe5b6000918252602090912001546001600160a01b0316905081565b6033546000906001600160a01b03166104a5576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156104f157600080fd5b505afa158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d602081101561059057600080fd5b505192915050565b610342806105a68339019056fe60806040526040516103423803806103428339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610223565b6101be8161021d60201b61009a1760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610307603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b151590565b60d6806102316000396000f3fe6080604052366044576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b6050604c6052565b6077565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156095573d6000f35b3d6000fd5b3b15159056fea26469706673582212208ed6ffa1ceda73e7f2255c282c025b00bc31cb41fe1328bb37a62d3c6f61c36564736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212201a9cd7ba0e02704c643345fc2525f06ac78374e1028cc7674766f45d8f66d53a64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletCache deploys a new Ethereum contract, binding an instance of WalletCache to it. func DeployWalletCache(auth *bind.TransactOpts, backend bind.ContractBackend, _walletImplementation_ common.Address, _ens_ common.Address, _defaultDailyLimit_ *big.Int, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _tokenWhitelistNode_ [32]byte, _walletDeployerNode_ [32]byte) (common.Address, *types.Transaction, *WalletCache, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index b097d855..13280c5e 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a264697066735822122093e29804252de65547daf27ec36f5c117212e98f7ccf8955e5276004911811aa64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220abad9426a2fda9f6fb07e8b6cd83bfa530dcbd47fd5d1700c86f21554dd525cb64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { From 53141d3aaa931bc94c9bcbd531da7bc382235372 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 9 Dec 2020 10:50:42 +0100 Subject: [PATCH 51/66] wallet: complete privileged mode --- contracts/wallet.sol | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 3987f210..2f666fb0 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -67,6 +67,8 @@ contract OptOutableMonolith2FA is Controllable, Ownable { _; } + + /// @dev set Monolith to be the 2FA function setMonolith2FA() external onlyOwner { require(!monolith2FA, "monolith2FA already enabled"); @@ -77,7 +79,7 @@ contract OptOutableMonolith2FA is Controllable, Ownable { /// @dev set personal 2FA to the address the user provided, needs to be called by a privileged relayed Tx function setPersonal2FA(address _p2FA) external onlyOwner { - require(privileged, "Setting a personal 2FA requires privileged mode"); + //require(privileged, "Setting a personal 2FA requires privileged mode"); require(_p2FA != address(0), "2FA cannot be set to zero"); require(_p2FA != personal2FA, "address already set"); require(_p2FA != address(this), "2FA cannot be the wallet address"); @@ -507,11 +509,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe batchExecuteTransaction(_data); privileged = false; - // invoke wallet function with an external call - (bool success, bytes memory returnData) = address(this).call(_data); - require(success, string(returnData)); - - emit ExecutedRelayedTransaction(_data, returnData, _privileged); + emit ExecutedRelayedTransaction(_data, "", _privileged); } /// @dev This returns the balance of the contract for any ERC20 token or ETH. From b83c8ffd9de2ec52fa6f9b096642e8b512656ebf Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 9 Dec 2020 10:51:18 +0100 Subject: [PATCH 52/66] test: add privileged relayed tests --- ...ute_privileged_relayed_transaction_test.go | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/test/wallet/execute_privileged_relayed_transaction_test.go b/test/wallet/execute_privileged_relayed_transaction_test.go index 5437bb07..722fadb8 100644 --- a/test/wallet/execute_privileged_relayed_transaction_test.go +++ b/test/wallet/execute_privileged_relayed_transaction_test.go @@ -64,7 +64,7 @@ var _ = Describe("executePrivilegedRelayedTransaction", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("only owner")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("invalid signature")) }) }) @@ -231,19 +231,23 @@ var _ = Describe("executePrivilegedRelayedTransaction", func() { When("the the non-privileged mode is used each one of them fails separately due to having exceeded the limit ", func() { It("should fail when transfering 1 ETH (>100$)", func() { // send value (1 ETH) > 100$ - data := []byte(fmt.Sprintf("%s%s%s", RandomAccount.Address(), abi.U256(EthToWei(1)), abi.U256(big.NewInt(0)))) + a, err := abi.JSON(strings.NewReader(WALLET_ABI)) + Expect(err).ToNot(HaveOccurred()) + data, err := a.Pack("transfer", RandomAccount.Address(), common.HexToAddress("0x0"), EthToWei(1)) + + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(1)), abi.U256(big.NewInt(int64(len(data)))), data)) nonce := big.NewInt(0) chainId := big.NewInt(1337) - signature, err := SignData(chainId, WalletProxyAddress, nonce, data, Owner.PrivKey()) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, Owner.PrivKey()) Expect(err).ToNot(HaveOccurred()) - tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(200000)), nonce, data, signature) + tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(200000)), nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("available100$)", func() { @@ -252,19 +256,19 @@ var _ = Describe("executePrivilegedRelayedTransaction", func() { Expect(err).ToNot(HaveOccurred()) data, err := a.Pack("transfer", RandomAccount.Address(), ERC20Contract1Address, EthToWei(1)) Expect(err).ToNot(HaveOccurred()) - data = []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(1)), abi.U256(big.NewInt(int64(len(data)))), data)) nonce := big.NewInt(0) chainId := big.NewInt(1337) - signature, err := SignData(chainId, WalletProxyAddress, nonce, data, Owner.PrivKey()) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, Owner.PrivKey()) Expect(err).ToNot(HaveOccurred()) - tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(200000)), nonce, data, signature) + tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(200000)), nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("available Date: Wed, 9 Dec 2020 10:51:45 +0100 Subject: [PATCH 53/66] test: add relayed tests --- .../execute_relayed_transaction_test.go | 13 +++------ test/wallet/relay_test.go | 28 +++++++++++++------ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/test/wallet/execute_relayed_transaction_test.go b/test/wallet/execute_relayed_transaction_test.go index 3b7fdef3..11a9ce3b 100644 --- a/test/wallet/execute_relayed_transaction_test.go +++ b/test/wallet/execute_relayed_transaction_test.go @@ -15,7 +15,7 @@ import ( "github.com/tokencard/ethertest" ) -var _ = FDescribe("executeRelayedTransaction", func() { +var _ = Describe("executeRelayedTransaction", func() { BeforeEach(func() { BankAccount.MustTransfer(Backend, WalletProxyAddress, EthToWei(4)) @@ -70,7 +70,7 @@ var _ = FDescribe("executeRelayedTransaction", func() { signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, privateKey) Expect(err).ToNot(HaveOccurred()) - tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(500000)), nonce, batch, signature) + tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(1000000)), nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) @@ -99,18 +99,13 @@ var _ = FDescribe("executeRelayedTransaction", func() { signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, Owner.PrivKey()) Expect(err).ToNot(HaveOccurred()) - tx, err := WalletProxy.ExecuteRelayedTransaction(Owner.TransactOpts(ethertest.WithGasLimit(1000000)), nonce, batch, signature) + tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(1000000)), nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - fmt.Println("here") - //returnData, _ := ethCall(tx) - //Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("invalid signature")) - Expect(isSuccessful(tx)).To(BeTrue()) - fmt.Println("here 2") }) - FIt("should emit an IncreasedRelayNonce event", func() { + It("should emit an IncreasedRelayNonce event", func() { it, err := WalletProxy.FilterIncreasedRelayNonce(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) diff --git a/test/wallet/relay_test.go b/test/wallet/relay_test.go index cbb13511..d1f76af3 100644 --- a/test/wallet/relay_test.go +++ b/test/wallet/relay_test.go @@ -3,6 +3,7 @@ package wallet_test import ( "context" "crypto/ecdsa" + "fmt" "math/big" "strings" @@ -143,12 +144,14 @@ var _ = Describe("relay Tx", func() { data, err := a.Pack("transfer", randomAddress, common.HexToAddress("0x0"), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + nonce := big.NewInt(0) chainId := big.NewInt(1337) - signature, err := SignData(chainId, WalletProxyAddress, nonce, data, privateKey) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, privateKey) Expect(err).ToNot(HaveOccurred()) - tx, err = WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(), nonce, data, signature) + tx, err = WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(500000)), nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -179,7 +182,8 @@ var _ = Describe("relay Tx", func() { a, err := abi.JSON(strings.NewReader(WALLET_ABI)) Expect(err).ToNot(HaveOccurred()) data, err := a.Pack("transfer", randomAddress, common.HexToAddress("0x0"), EthToWei(1)) - Expect(evt.Data).To(Equal(data)) + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + Expect(evt.Data).To(Equal(batch)) Expect(evt.ReturnData).To(Equal([]byte{})) }) @@ -218,12 +222,14 @@ var _ = Describe("relay Tx", func() { data, err := a.Pack("transfer", randomAddress, common.HexToAddress("0x0"), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + nonce := big.NewInt(1) chainId := big.NewInt(1337) - signature, err := SignData(chainId, WalletProxyAddress, nonce, data, privateKey) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, privateKey) Expect(err).ToNot(HaveOccurred()) - tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(), nonce, data, signature) + tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(), nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -237,9 +243,11 @@ var _ = Describe("relay Tx", func() { data, err := a.Pack("transfer", common.HexToAddress("0x0"), common.HexToAddress("0x0"), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + nonce := big.NewInt(0) chainId := big.NewInt(1337) - signature, err := SignData(chainId, WalletProxyAddress, nonce, data, privateKey) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, privateKey) Expect(err).ToNot(HaveOccurred()) tx, err := WalletProxy.TransferOwnership(Owner.TransactOpts(), randomAddress, false) @@ -247,7 +255,7 @@ var _ = Describe("relay Tx", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) - tx, err = WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(500000)), nonce, data, signature) + tx, err = WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(500000)), nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) @@ -264,9 +272,11 @@ var _ = Describe("relay Tx", func() { data, err := a.Pack("transfer", common.HexToAddress("0x0"), common.HexToAddress("0x0"), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) + batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(0)), abi.U256(big.NewInt(int64(len(data)))), data)) + nonce := big.NewInt(0) chainId := big.NewInt(1337) - signature, err := SignData(chainId, WalletProxyAddress, nonce, data, privateKey) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, privateKey) Expect(err).ToNot(HaveOccurred()) tx, err := WalletProxy.IncreaseRelayNonce(Owner.TransactOpts()) @@ -284,7 +294,7 @@ var _ = Describe("relay Tx", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) - tx, err = WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(500000)), nonce, data, signature) + tx, err = WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(500000)), nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) From 95f95fc2eac27b0c0e8d54dafafd561a0de34946 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 9 Dec 2020 10:52:23 +0100 Subject: [PATCH 54/66] fix remaining wallet tests --- test/wallet/2fa_test.go | 4 ++-- test/wallet/metaTx_refund_test.go | 29 +++++++++++------------------ 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/test/wallet/2fa_test.go b/test/wallet/2fa_test.go index c49ae4cd..9f92ec36 100644 --- a/test/wallet/2fa_test.go +++ b/test/wallet/2fa_test.go @@ -149,7 +149,7 @@ var _ = Describe("2FA", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not controller")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not a Monolith 2FA")) }) }) @@ -233,7 +233,7 @@ var _ = Describe("2FA", func() { Backend.Commit() Expect(isSuccessful(tx)).To(BeFalse()) returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not controller")) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not a Monolith 2FA")) }) }) diff --git a/test/wallet/metaTx_refund_test.go b/test/wallet/metaTx_refund_test.go index 17f22f0e..8a016f14 100644 --- a/test/wallet/metaTx_refund_test.go +++ b/test/wallet/metaTx_refund_test.go @@ -13,6 +13,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" . "github.com/tokencard/contracts/v3/test/shared" + "github.com/tokencard/ethertest" ) var _ = Describe("metaTx refund", func() { @@ -50,20 +51,14 @@ var _ = Describe("metaTx refund", func() { When("controller relays an ETH transfer and a refund", func() { BeforeEach(func() { - batch := fmt.Sprintf("%s%s%s%s%s%s", randomAddress, abi.U256(EthToWei(1)), abi.U256(big.NewInt(0)), - tokenBank, abi.U256(big.NewInt(1000)), abi.U256(big.NewInt(0))) - - a, err := abi.JSON(strings.NewReader(WALLET_ABI)) - Expect(err).ToNot(HaveOccurred()) - data, err := a.Pack("batchExecuteTransaction", []byte(batch)) - Expect(err).ToNot(HaveOccurred()) + batch := []byte(fmt.Sprintf("%s%s%s%s%s%s", randomAddress, abi.U256(EthToWei(1)), abi.U256(big.NewInt(0)), tokenBank, abi.U256(EthToWei(1)), abi.U256(big.NewInt(0)))) nonce := big.NewInt(0) chainId := big.NewInt(1337) - signature, err := SignData(chainId, WalletProxyAddress, nonce, data, privateKey) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch, privateKey) Expect(err).ToNot(HaveOccurred()) - tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(), nonce, data, signature) + tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(500000)), nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -78,7 +73,7 @@ var _ = Describe("metaTx refund", func() { It("should increase the Controller's balance by 1000 wei", func() { b, e := Backend.BalanceAt(context.Background(), tokenBank, nil) Expect(e).ToNot(HaveOccurred()) - Expect(b.String()).To(Equal("1000")) + Expect(b.String()).To(Equal(EthToWei(1).String())) }) }) @@ -93,19 +88,18 @@ var _ = Describe("metaTx refund", func() { data, err = a.Pack("transfer", tokenBank, big.NewInt(10)) Expect(err).ToNot(HaveOccurred()) - batch = fmt.Sprintf("%s%s%s%s%s", batch, TKNBurnerAddress, abi.U256(big.NewInt(0)), abi.U256(big.NewInt(int64(len(data)))), data) + batch2 := []byte(fmt.Sprintf("%s%s%s%s%s", batch, TKNBurnerAddress, abi.U256(big.NewInt(0)), abi.U256(big.NewInt(int64(len(data)))), data)) a, err = abi.JSON(strings.NewReader(WALLET_ABI)) Expect(err).ToNot(HaveOccurred()) - data, err = a.Pack("batchExecuteTransaction", []byte(batch)) - Expect(err).ToNot(HaveOccurred()) nonce := big.NewInt(0) chainId := big.NewInt(1337) - signature, err := SignData(chainId, WalletProxyAddress, nonce, data, privateKey) + signature, err := SignData(chainId, WalletProxyAddress, nonce, batch2, privateKey) + Expect(err).ToNot(HaveOccurred()) - tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(), nonce, data, signature) + tx, err := WalletProxy.ExecuteRelayedTransaction(Controller.TransactOpts(ethertest.WithGasLimit(1000000)), nonce, batch2, signature) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) @@ -162,10 +156,9 @@ var _ = Describe("metaTx refund", func() { data, _ := a.Pack("transfer", randomAddress, big.NewInt(290)) batch := fmt.Sprintf("%s%s%s%s", TKNBurnerAddress, abi.U256(big.NewInt(0)), abi.U256(big.NewInt(int64(len(data)))), data) data, _ = a.Pack("transfer", tokenBank, big.NewInt(10)) - batch = fmt.Sprintf("%s%s%s%s%s", batch, TKNBurnerAddress, abi.U256(big.NewInt(0)), abi.U256(big.NewInt(int64(len(data)))), data) + batchData := []byte(fmt.Sprintf("%s%s%s%s%s", batch, TKNBurnerAddress, abi.U256(big.NewInt(0)), abi.U256(big.NewInt(int64(len(data)))), data)) a, err = abi.JSON(strings.NewReader(WALLET_ABI)) - data, _ = a.Pack("batchExecuteTransaction", []byte(batch)) - Expect(evt.Data).To(Equal(data)) + Expect(evt.Data).To(Equal(batchData)) Expect(evt.ReturnData).To(Equal(common.Hex2Bytes(""))) }) }) From 91029c845be7a08fd98ba2cf42f306a0f6b5b61f Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 9 Dec 2020 10:52:52 +0100 Subject: [PATCH 55/66] test: increase test coverage in wallet --- test/wallet/wallet_suite_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/wallet/wallet_suite_test.go b/test/wallet/wallet_suite_test.go index 10ab9888..91507069 100644 --- a/test/wallet/wallet_suite_test.go +++ b/test/wallet/wallet_suite_test.go @@ -148,7 +148,7 @@ var _ = AfterEach(func() { var _ = AfterSuite(func() { if allPassed { - TestRig.ExpectMinimumCoverage("wallet.sol", 95.00) + TestRig.ExpectMinimumCoverage("wallet.sol", 99.00) TestRig.PrintGasUsage(os.Stdout) } }) From 6a88a77444ed9094aa90ef850d9f04cf632b5d4b Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 9 Dec 2020 13:16:46 +0100 Subject: [PATCH 56/66] fix gas proxy tests --- test/gas-proxy/execute_metaTransaction_test.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/test/gas-proxy/execute_metaTransaction_test.go b/test/gas-proxy/execute_metaTransaction_test.go index a8599447..3de94ba9 100644 --- a/test/gas-proxy/execute_metaTransaction_test.go +++ b/test/gas-proxy/execute_metaTransaction_test.go @@ -17,6 +17,7 @@ import ( "github.com/tokencard/contracts/v3/pkg/bindings" "github.com/tokencard/contracts/v3/pkg/bindings/externals/upgradeability" . "github.com/tokencard/contracts/v3/test/shared" + "github.com/tokencard/ethertest" ) var WalletImplementationAddress common.Address @@ -72,18 +73,24 @@ var _ = Describe("ExecuteMetaTransaction", func() { Expect(err).ToNot(HaveOccurred()) data, err := walletABI.Pack("transfer", RandomAccount.Address(), common.HexToAddress("0x0"), EthToWei(1)) Expect(err).ToNot(HaveOccurred()) + + batch := []byte(fmt.Sprintf("%s%s%s%s", Owner.Address(), abi.U256(EthToWei(1)), abi.U256(big.NewInt(int64(len(data)))), data)) + nonce := big.NewInt(0) chainId := big.NewInt(1337) - signature, err := SignData(chainId, ProxyAddress, nonce, data, Owner.PrivKey()) + signature, err := SignData(chainId, ProxyAddress, nonce, batch, Owner.PrivKey()) Expect(err).ToNot(HaveOccurred()) // create relayed transaction data - data, err = walletABI.Pack("executeRelayedTransaction", nonce, data, signature) + data, err = walletABI.Pack("executeRelayedTransaction", nonce, batch, signature) Expect(err).ToNot(HaveOccurred()) - tx, err := GasProxy.ExecuteTransaction(Controller.TransactOpts(), ProxyAddress, big.NewInt(0), data) + tx, err := GasProxy.ExecuteTransaction(Controller.TransactOpts(ethertest.WithGasLimit(6000000)), ProxyAddress, big.NewInt(0), data) Expect(err).ToNot(HaveOccurred()) Backend.Commit() + //returnData, _ := ethCall(tx) + //Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("available smaller than amount")) Expect(isSuccessful(tx)).To(BeTrue()) + }) It("should decrease the wallet's ETH balance ", func() { From c305ca637e283f120ee5cb26b0cee73d450baa25 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 9 Dec 2020 17:24:31 +0100 Subject: [PATCH 57/66] test: add missing check on transaction --- test/wallet/execute_privileged_relayed_transaction_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/test/wallet/execute_privileged_relayed_transaction_test.go b/test/wallet/execute_privileged_relayed_transaction_test.go index 722fadb8..2e0a45b0 100644 --- a/test/wallet/execute_privileged_relayed_transaction_test.go +++ b/test/wallet/execute_privileged_relayed_transaction_test.go @@ -234,6 +234,7 @@ var _ = Describe("executePrivilegedRelayedTransaction", func() { a, err := abi.JSON(strings.NewReader(WALLET_ABI)) Expect(err).ToNot(HaveOccurred()) data, err := a.Pack("transfer", RandomAccount.Address(), common.HexToAddress("0x0"), EthToWei(1)) + Expect(err).ToNot(HaveOccurred()) batch := []byte(fmt.Sprintf("%s%s%s%s", WalletProxyAddress, abi.U256(EthToWei(1)), abi.U256(big.NewInt(int64(len(data)))), data)) From b0ce044af648d81fb1132352cfd097d0b5eb7016 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 10 Dec 2020 10:50:07 +0100 Subject: [PATCH 58/66] prettier and slighter --- contracts/wallet.sol | 14 ++++++++++---- tools/slither/slither.db.json | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/contracts/wallet.sol b/contracts/wallet.sol index 2f666fb0..dab3cc54 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -67,8 +67,6 @@ contract OptOutableMonolith2FA is Controllable, Ownable { _; } - - /// @dev set Monolith to be the 2FA function setMonolith2FA() external onlyOwner { require(!monolith2FA, "monolith2FA already enabled"); @@ -471,12 +469,20 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe } /// Meta-transaction - function executeRelayedTransaction (uint _nonce, bytes calldata _data, bytes calldata _signature) external onlyController { + function executeRelayedTransaction( + uint256 _nonce, + bytes calldata _data, + bytes calldata _signature + ) external onlyController { return _executeRelayedTransaction(_nonce, _data, _signature, false); } /// Privileged functionality - function executePrivilegedRelayedTransaction (uint _nonce, bytes calldata _data, bytes calldata _signature) external only2FA { + function executePrivilegedRelayedTransaction( + uint256 _nonce, + bytes calldata _data, + bytes calldata _signature + ) external only2FA { return _executeRelayedTransaction(_nonce, _data, _signature, true); } diff --git a/tools/slither/slither.db.json b/tools/slither/slither.db.json index 4872ec8f..c16453c8 100644 --- a/tools/slither/slither.db.json +++ b/tools/slither/slither.db.json @@ -1 +1 @@ -[{"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 29701, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [637], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 30279, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [646], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#617-647) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#637)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#646)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L617-L647) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L637)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L646)\n", "id": "d2c5cb2e5931b94801f80e0acda602945a4805c0108658fe67563a7fe48aded6", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 22307, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 22431, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#472-495):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#491)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#494)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L472-L495):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L491)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L494)\n", "id": "a8d590b479be6c7a5486a15f28b79f1ed4179ef88e16654bee70e3c4840270ac", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 32172, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [680], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 32394, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [686], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#680)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#686)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L680)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L686)\n", "id": "986bd40ae5ee76690167450a3abc2d74f1b560e57f7e039af9cad3096385c0c0", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 32493, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [690], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 32631, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [693], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#690)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#693)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L690)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L693)\n", "id": "8f6b4e2d1a128b9a63a81a91967f7d3da642da1f7a2815bccf113f8d39a02a9b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 24914, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [545], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 24979, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [546], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 25139, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [551], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#535-552):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#545)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#546)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#551)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L535-L552):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L545)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L546)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L551)\n", "id": "5d28da95b1f9bdee832322c8cd183afab1c956d24a6b3f2e67483c85a87fe6a5", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 15923, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [351], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#350-356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#351)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L350-L356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L351)\n", "id": "b4af7a01c46ddfad3f8ece6253cd966f942fd4d9ad2c113e52c50bdbdbbb6f3a", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 17769, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#394-402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#395)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L394-L402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L395)\n", "id": "7771a43c1a0d9f6b6d925730066b4c66691ecd08134f1be5f9f612a08bef77bc", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 25998, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [567], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 26071, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [569], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#561-570):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#567)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#569)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L561-L570):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L567)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L569)\n", "id": "5194d4fef8f9d6c33183161cb43e75b034bdafb4203afb207216d0b2cb034a17", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3520, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [85], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#85)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L85)\n", "id": "8f154ecfc5824e3b987314d0a2f5e529d003edef50be40d366b15f160d857e1c", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3451, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [83], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#83)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L83)\n", "id": "b29cdb51c11b209fa6cbae7acc6eaa1139948abf695c7c82dd1dc272cd236cd2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 4041, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4149, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "23ece0d6e57608c6c57add03c9e58044d357633c8cdab578e48ffcc72f8dd86a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4843, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "37e5ae3fd03f04bd9c52830c372f415d3a32cab48338b06a9d00c56d48f3804b", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4880, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "791c5f8285dd95ff5dce366ad41ab8ab3c4a8d5d8f5298264ad1051199435b2c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 27982, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [583], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 28560, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [592], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#563-593) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#583)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#592)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L563-L593) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L583)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L592)\n", "id": "1e0b234747807fbb5245169570b2b7fb9f07f78ac1afa8e1be592afb1191efcd", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20581, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [437], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20705, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [440], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#418-441):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#437)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#440)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L418-L441):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L437)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L440)\n", "id": "3a35fb3bee7858d2e5e2dfe41b98c442fc8f9866db6fcf679aac1497dd758db8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30453, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [626], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30675, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [632], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#626)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#632)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L626)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L632)\n", "id": "c1a1c741ecef7d0ec1b421c1549e41a3c5de2e1da3390cb741cba8a00040234a", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30774, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [636], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30912, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [639], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#636)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#639)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L636)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L639)\n", "id": "74afa6312b4eb14d15de176af037db957fb7df33a76e2c3d7a6117ac1a1fb22c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23188, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23253, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23413, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [497], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#481-498):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#491)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#492)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#497)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L481-L498):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L491)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L492)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L497)\n", "id": "77327b12f5a5c8c7964e978adbdcbe01bc6a937432ecfb766b117fde7232da34", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14216, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [298], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#297-303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#298)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L297-L303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L298)\n", "id": "73f9c07c94114fae31ba92b92e7ca095093697dfe1a61ce7761e9a46eaf02c44", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16062, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [342], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#341-349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#342)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L341-L349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L342)\n", "id": "1c842f34e2052c53a5f20027dbc7c11424de7477557713fb885cc7a53b3665e8", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24279, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [513], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24352, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [515], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#507-516):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#513)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#515)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L507-L516):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L513)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L515)\n", "id": "5a28f20b36e8e9aae8526a3b185ba0f8347ba516247b1ee9cbead8908ff836a7", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 28593, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [604], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 29171, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [613], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#588-614) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#604)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#613)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L588-L614) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L604)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L613)\n", "id": "9bda81c6a396bc6e5af3ccdc7c781eb7305c37a94bf87db3c9ccbfeb5ae5b3eb", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 12438, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265], "starting_column": 52, "ending_column": 79}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeDailyLimit", "source_mapping": {"start": 12391, "length": 321, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265, 266, 267, 268, 269, 270, 271, 272], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeDailyLimit(uint256,bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#265) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L265) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "e5bb81054c4147256bf3aaebe7ef7cdeedd5bd5182d32dc08afd644b0f9e0116", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 29569, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [622], "starting_column": 9, "ending_column": 23}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.executeTransaction(address,uint256,bytes)._value (../../contracts/wallet.sol#622) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.executeTransaction(address,uint256,bytes)._value](../../contracts/wallet.sol#L622) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "90bfcd468a576433295dc979256339d182d72c064d955766641725f26a929749", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 19206, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419], "starting_column": 24, "ending_column": 38}, "type_specific_fields": {"parent": {"type": "function", "name": "isNotZero", "source_mapping": {"start": 19187, "length": 94, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419, 420, 421, 422], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "isNotZero(uint256)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.isNotZero(uint256)._value (../../contracts/wallet.sol#419) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.isNotZero(uint256)._value](../../contracts/wallet.sol#L419) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "1e335a6c51143516ea2aacb63ebfae14b068c26f1fc55aea86d9a1530cbc2bf0", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20593, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [448], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20717, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [451], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#429-452):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#448)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#451)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L429-L452):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L448)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L451)\n", "id": "ec79e84527eef8746fa9ec647fc99366159eb2609e4213975bce953241a24c1b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30827, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [644], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 31049, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [650], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#644)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#650)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L644)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L650)\n", "id": "ecf8400146003c4b7b7e44c18ee6d86249787a89215657c598f9e3cb3b72319b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 31148, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 31286, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [657], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#654)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#657)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L654)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L657)\n", "id": "b5a1c394bd5406139a742ec93ae05a64d17d4f50fa4e3bd83ce7efa4d1a53cfa", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23200, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [502], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23265, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [503], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23425, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#492-509):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#502)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#503)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#508)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L492-L509):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L502)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L503)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L508)\n", "id": "3b788cb6a30b3f641772c7e7583a408a1bd7f85564b33648492384ce610931e7", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 13877, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L301)\n", "id": "a93d679b54ec36d932fcff36e21d2a580a2dfd6cdf2a38b039c9235b67baccb9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 16104, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#352-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#353)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L352-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L353)\n", "id": "e35a8401ff8c2805f39f87764799163bcf46e67e24e9f0dc1ca8af147616ab94", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24291, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [524], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24364, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [526], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#518-527):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#524)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#526)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L518-L527):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L524)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L526)\n", "id": "c43efe0610e655bec1cdb32e08e234a043a3b790995b3136e9ab21e91d3bc687", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] \ No newline at end of file +[{"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 29650, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 30581, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [661], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 29650, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 31159, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 29650, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#641-671) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#661)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#670)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L641-L671) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L661)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L670)\n", "id": "dc79bda57b1d0cdcd5c8657131a5eccab005c95e3f1fc86cc7e2340f38f68a34", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 33081, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [704], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 33303, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [710], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#677-720):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#704)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#710)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L677-L720):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L704)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L710)\n", "id": "50754dd812db3ca6dd35b6d500ed4db24b1d78fd7b6b80325c1bcd758f3993db", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 33402, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [714], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 33540, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [717], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#677-720):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#714)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#717)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L677-L720):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L714)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L717)\n", "id": "f2f83e08b57057f2dc084cf764f3b5f9460c98000e5e15ce276e33a38e65be20", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 25795, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [569], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 25860, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [570], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25937, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [572], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25937, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [572], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 26020, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#559-576):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#569)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#570)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#572)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#572)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#575)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L559-L576):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L569)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L570)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L572)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L572)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L575)\n", "id": "486bed9158bc158014fe19c800bbfd03e74f74d53f7019aa3ced16edba18de67", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 16124, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16201, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [355], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 16124, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#354-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#355)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L354-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L355)\n", "id": "0696c9feb27ea80b0d2a54688f7c55dd81ee7981ff949bf1ec1b68506a847843", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17987, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [398, 399, 400, 401, 402, 403, 404, 405, 406], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 18047, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [399], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17987, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [398, 399, 400, 401, 402, 403, 404, 405, 406], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#398-406) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#399)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L398-L406) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L399)\n", "id": "e99dd80222e1b947ff487d4815ef0e6deab603ea426134bf1862259885e75008", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 26455, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 26879, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [591], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 26455, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 26952, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [593], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 26455, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#585-594):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#591)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#593)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L585-L594):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L591)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L593)\n", "id": "895af948f3aac2b9d21696aa7a843268174a39e8a414844bbb7023ecc38aab17", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 29701, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [637], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 30279, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [646], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#617-647) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#637)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#646)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L617-L647) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L637)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L646)\n", "id": "d2c5cb2e5931b94801f80e0acda602945a4805c0108658fe67563a7fe48aded6", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 22307, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 22431, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#472-495):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#491)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#494)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L472-L495):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L491)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L494)\n", "id": "a8d590b479be6c7a5486a15f28b79f1ed4179ef88e16654bee70e3c4840270ac", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 32172, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [680], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 32394, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [686], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#680)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#686)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L680)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L686)\n", "id": "986bd40ae5ee76690167450a3abc2d74f1b560e57f7e039af9cad3096385c0c0", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 32493, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [690], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 32631, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [693], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#690)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#693)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L690)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L693)\n", "id": "8f6b4e2d1a128b9a63a81a91967f7d3da642da1f7a2815bccf113f8d39a02a9b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 24914, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [545], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 24979, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [546], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 25139, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [551], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#535-552):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#545)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#546)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#551)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L535-L552):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L545)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L546)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L551)\n", "id": "5d28da95b1f9bdee832322c8cd183afab1c956d24a6b3f2e67483c85a87fe6a5", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 15923, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [351], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#350-356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#351)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L350-L356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L351)\n", "id": "b4af7a01c46ddfad3f8ece6253cd966f942fd4d9ad2c113e52c50bdbdbbb6f3a", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 17769, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#394-402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#395)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L394-L402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L395)\n", "id": "7771a43c1a0d9f6b6d925730066b4c66691ecd08134f1be5f9f612a08bef77bc", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 25998, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [567], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 26071, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [569], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#561-570):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#567)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#569)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L561-L570):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L567)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L569)\n", "id": "5194d4fef8f9d6c33183161cb43e75b034bdafb4203afb207216d0b2cb034a17", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3520, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [85], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#85)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L85)\n", "id": "8f154ecfc5824e3b987314d0a2f5e529d003edef50be40d366b15f160d857e1c", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3451, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [83], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#83)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L83)\n", "id": "b29cdb51c11b209fa6cbae7acc6eaa1139948abf695c7c82dd1dc272cd236cd2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 4041, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4149, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "23ece0d6e57608c6c57add03c9e58044d357633c8cdab578e48ffcc72f8dd86a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4843, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "37e5ae3fd03f04bd9c52830c372f415d3a32cab48338b06a9d00c56d48f3804b", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4880, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "791c5f8285dd95ff5dce366ad41ab8ab3c4a8d5d8f5298264ad1051199435b2c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 27982, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [583], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 28560, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [592], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#563-593) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#583)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#592)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L563-L593) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L583)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L592)\n", "id": "1e0b234747807fbb5245169570b2b7fb9f07f78ac1afa8e1be592afb1191efcd", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20581, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [437], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20705, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [440], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#418-441):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#437)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#440)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L418-L441):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L437)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L440)\n", "id": "3a35fb3bee7858d2e5e2dfe41b98c442fc8f9866db6fcf679aac1497dd758db8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30453, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [626], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30675, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [632], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#626)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#632)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L626)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L632)\n", "id": "c1a1c741ecef7d0ec1b421c1549e41a3c5de2e1da3390cb741cba8a00040234a", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30774, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [636], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30912, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [639], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#636)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#639)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L636)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L639)\n", "id": "74afa6312b4eb14d15de176af037db957fb7df33a76e2c3d7a6117ac1a1fb22c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23188, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23253, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23413, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [497], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#481-498):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#491)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#492)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#497)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L481-L498):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L491)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L492)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L497)\n", "id": "77327b12f5a5c8c7964e978adbdcbe01bc6a937432ecfb766b117fde7232da34", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14216, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [298], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#297-303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#298)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L297-L303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L298)\n", "id": "73f9c07c94114fae31ba92b92e7ca095093697dfe1a61ce7761e9a46eaf02c44", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16062, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [342], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#341-349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#342)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L341-L349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L342)\n", "id": "1c842f34e2052c53a5f20027dbc7c11424de7477557713fb885cc7a53b3665e8", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24279, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [513], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24352, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [515], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#507-516):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#513)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#515)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L507-L516):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L513)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L515)\n", "id": "5a28f20b36e8e9aae8526a3b185ba0f8347ba516247b1ee9cbead8908ff836a7", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 28593, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [604], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 29171, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [613], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#588-614) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#604)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#613)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L588-L614) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L604)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L613)\n", "id": "9bda81c6a396bc6e5af3ccdc7c781eb7305c37a94bf87db3c9ccbfeb5ae5b3eb", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 12438, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265], "starting_column": 52, "ending_column": 79}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeDailyLimit", "source_mapping": {"start": 12391, "length": 321, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265, 266, 267, 268, 269, 270, 271, 272], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeDailyLimit(uint256,bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#265) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L265) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "e5bb81054c4147256bf3aaebe7ef7cdeedd5bd5182d32dc08afd644b0f9e0116", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 29569, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [622], "starting_column": 9, "ending_column": 23}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.executeTransaction(address,uint256,bytes)._value (../../contracts/wallet.sol#622) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.executeTransaction(address,uint256,bytes)._value](../../contracts/wallet.sol#L622) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "90bfcd468a576433295dc979256339d182d72c064d955766641725f26a929749", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 19206, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419], "starting_column": 24, "ending_column": 38}, "type_specific_fields": {"parent": {"type": "function", "name": "isNotZero", "source_mapping": {"start": 19187, "length": 94, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419, 420, 421, 422], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "isNotZero(uint256)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.isNotZero(uint256)._value (../../contracts/wallet.sol#419) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.isNotZero(uint256)._value](../../contracts/wallet.sol#L419) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "1e335a6c51143516ea2aacb63ebfae14b068c26f1fc55aea86d9a1530cbc2bf0", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20593, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [448], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20717, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [451], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#429-452):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#448)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#451)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L429-L452):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L448)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L451)\n", "id": "ec79e84527eef8746fa9ec647fc99366159eb2609e4213975bce953241a24c1b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30827, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [644], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 31049, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [650], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#644)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#650)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L644)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L650)\n", "id": "ecf8400146003c4b7b7e44c18ee6d86249787a89215657c598f9e3cb3b72319b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 31148, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 31286, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [657], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#654)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#657)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L654)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L657)\n", "id": "b5a1c394bd5406139a742ec93ae05a64d17d4f50fa4e3bd83ce7efa4d1a53cfa", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23200, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [502], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23265, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [503], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23425, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#492-509):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#502)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#503)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#508)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L492-L509):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L502)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L503)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L508)\n", "id": "3b788cb6a30b3f641772c7e7583a408a1bd7f85564b33648492384ce610931e7", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 13877, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L301)\n", "id": "a93d679b54ec36d932fcff36e21d2a580a2dfd6cdf2a38b039c9235b67baccb9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 16104, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#352-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#353)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L352-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L353)\n", "id": "e35a8401ff8c2805f39f87764799163bcf46e67e24e9f0dc1ca8af147616ab94", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24291, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [524], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24364, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [526], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#518-527):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#524)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#526)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L518-L527):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L524)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L526)\n", "id": "c43efe0610e655bec1cdb32e08e234a043a3b790995b3136e9ab21e91d3bc687", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] \ No newline at end of file From 5a74faded263e7cbbb24c6b9dd9f782f1e2d122c Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 10 Dec 2020 10:51:51 +0100 Subject: [PATCH 59/66] pkb/bindings: update --- pkg/bindings/mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/wallet.go | 2 +- pkg/bindings/walletDeployer.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index 9c53d0f1..0e5797ff 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220d1dd268d50721ab587f41e18273777c31bf1b791e54b37a5015ac2f1bff7d48d64736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220f100ebfc14198f8d38d348a25a6ad2f95ca1ae467d20050b2666099a41e1555864736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index 4f8a9181..e7c95782 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_privileged\",\"type\":\"bool\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"SetMonolith2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"SetPersonal2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executePrivilegedRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"monolith2FA\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"personal2FA\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"privileged\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setMonolith2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"setPersonal2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b50615bae806200008a6000396000f3fe6080604052600436106102ae5760003560e01c80637b580e7511610175578063cbd2ac68116100dc578063d251fefc11610095578063e61c51ca1161006f578063e61c51ca14610eae578063f36febda14610ed8578063f421764814610f11578063f8b2cb4f14610f8c576102ae565b8063d251fefc14610e5a578063de212bf314610e84578063e2b4ce9714610e99576102ae565b8063cbd2ac6814610d19578063cccdc55614610d43578063cd7958dd14610d58578063ce0b5bd514610e06578063ced99cce14610e30578063cf0a866b14610e45576102ae565b8063aaf1fc621161012e578063aaf1fc6214610aee578063ad95580b14610b9f578063b242e53414610bb4578063be40ba7914610bef578063beabacc814610c04578063c1e559a314610c47576102ae565b80637b580e75146109ec5780637d73b23114610a1f5780637fd004fa14610a34578063877337b014610aaf5780638da5cb5b14610ac457806390e690c714610ad9576102ae565b8063458d07f2116102195780635adc02ab116101d25780635adc02ab146108985780636137d670146108c257806369efdfc01461093d5780636c37a7e614610998578063715018a6146109c2578063747c31d6146109d7576102ae565b8063458d07f21461072c57806345b12efc1461075657806346efe0ed1461076b57806347b55a9d1461083d57806347d125af146108525780634d9aa24814610883576102ae565b806326d05ab21161026b57806326d05ab214610566578063294f40251461057b57806332531c3c146105e05780633a43199f146106135780633b8252fa1461063f5780633f579f4214610666576102ae565b806301ffc9a7146102b3578063100f23fd146102fb5780631127b57e146103275780631626ba7e146103b157806320c13b0b146104865780632121dc7514610551575b600080fd5b3480156102bf57600080fd5b506102e7600480360360208110156102d657600080fd5b50356001600160e01b031916610fbf565b604080519115158252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b5035610fd9565b005b34801561033357600080fd5b5061033c611179565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561037657818101518382015260200161035e565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103bd57600080fd5b50610469600480360360408110156103d457600080fd5b81359190810190604081016020820135600160201b8111156103f557600080fd5b82018360208201111561040757600080fd5b803590602001918460018302840111600160201b8311171561042857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061119a945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561049257600080fd5b50610469600480360360408110156104a957600080fd5b810190602081018135600160201b8111156104c357600080fd5b8201836020820111156104d557600080fd5b803590602001918460018302840111600160201b831117156104f657600080fd5b919390929091602081019035600160201b81111561051357600080fd5b82018360208201111561052557600080fd5b803590602001918460018302840111600160201b8311171561054657600080fd5b509092509050611209565b34801561055d57600080fd5b506102e76112e0565b34801561057257600080fd5b506102e76112f1565b34801561058757600080fd5b506105906112fa565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105cc5781810151838201526020016105b4565b505050509050019250505060405180910390f35b3480156105ec57600080fd5b506102e76004803603602081101561060357600080fd5b50356001600160a01b031661135c565b6103256004803603604081101561062957600080fd5b506001600160a01b038135169060200135611371565b34801561064b57600080fd5b50610654611590565b60408051918252519081900360200190f35b34801561067257600080fd5b5061033c6004803603606081101561068957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156106b857600080fd5b8201836020820111156106ca57600080fd5b803590602001918460018302840111600160201b831117156106eb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611596945050505050565b34801561073857600080fd5b506103256004803603602081101561074f57600080fd5b5035611aac565b34801561076257600080fd5b50610654611b93565b34801561077757600080fd5b506103256004803603606081101561078e57600080fd5b81359190810190604081016020820135600160201b8111156107af57600080fd5b8201836020820111156107c157600080fd5b803590602001918460018302840111600160201b831117156107e257600080fd5b919390929091602081019035600160201b8111156107ff57600080fd5b82018360208201111561081157600080fd5b803590602001918460018302840111600160201b8311171561083257600080fd5b509092509050611bb1565b34801561084957600080fd5b50610590611c21565b34801561085e57600080fd5b50610867611c81565b604080516001600160a01b039092168252519081900360200190f35b34801561088f57600080fd5b50610654611c90565b3480156108a457600080fd5b50610325600480360360208110156108bb57600080fd5b5035611c96565b3480156108ce57600080fd5b50610325600480360360208110156108e557600080fd5b810190602081018135600160201b8111156108ff57600080fd5b82018360208201111561091157600080fd5b803590602001918460208302840111600160201b8311171561093257600080fd5b509092509050611fbd565b34801561094957600080fd5b50610325600480360360e081101561096057600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356121e4565b3480156109a457600080fd5b50610325600480360360208110156109bb57600080fd5b50356122c0565b3480156109ce57600080fd5b50610325612434565b3480156109e357600080fd5b5061065461252f565b3480156109f857600080fd5b5061032560048036036020811015610a0f57600080fd5b50356001600160a01b0316612535565b348015610a2b57600080fd5b50610867612748565b348015610a4057600080fd5b5061032560048036036020811015610a5757600080fd5b810190602081018135600160201b811115610a7157600080fd5b820183602082011115610a8357600080fd5b803590602001918460208302840111600160201b83111715610aa457600080fd5b509092509050612757565b348015610abb57600080fd5b50610654612a9a565b348015610ad057600080fd5b50610867612aa0565b348015610ae557600080fd5b50610325612aaf565b348015610afa57600080fd5b5061032560048036036020811015610b1157600080fd5b810190602081018135600160201b811115610b2b57600080fd5b820183602082011115610b3d57600080fd5b803590602001918460018302840111600160201b83111715610b5e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612b09945050505050565b348015610bab57600080fd5b50610325612c30565b348015610bc057600080fd5b5061032560048036036040811015610bd757600080fd5b506001600160a01b0381351690602001351515612d37565b348015610bfb57600080fd5b506102e7612eee565b348015610c1057600080fd5b5061032560048036036060811015610c2757600080fd5b506001600160a01b03813581169160208101359091169060400135612efd565b348015610c5357600080fd5b5061032560048036036060811015610c6a57600080fd5b81359190810190604081016020820135600160201b811115610c8b57600080fd5b820183602082011115610c9d57600080fd5b803590602001918460018302840111600160201b83111715610cbe57600080fd5b919390929091602081019035600160201b811115610cdb57600080fd5b820183602082011115610ced57600080fd5b803590602001918460018302840111600160201b83111715610d0e57600080fd5b509092509050613089565b348015610d2557600080fd5b5061032560048036036020811015610d3c57600080fd5b5035613140565b348015610d4f57600080fd5b50610654613527565b348015610d6457600080fd5b5061065460048036036020811015610d7b57600080fd5b810190602081018135600160201b811115610d9557600080fd5b820183602082011115610da757600080fd5b803590602001918460208302840111600160201b83111715610dc857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061352d945050505050565b348015610e1257600080fd5b5061032560048036036020811015610e2957600080fd5b5035613587565b348015610e3c57600080fd5b506102e761372b565b348015610e5157600080fd5b506102e761373b565b348015610e6657600080fd5b5061086760048036036020811015610e7d57600080fd5b503561374b565b348015610e9057600080fd5b506102e7613772565b348015610ea557600080fd5b50610654613780565b348015610eba57600080fd5b5061032560048036036020811015610ed157600080fd5b5035613786565b348015610ee457600080fd5b5061065460048036036040811015610efb57600080fd5b506001600160a01b038135169060200135613910565b348015610f1d57600080fd5b5061032560048036036020811015610f3457600080fd5b810190602081018135600160201b811115610f4e57600080fd5b820183602082011115610f6057600080fd5b803590602001918460208302840111600160201b83111715610f8157600080fd5b509092509050613a87565b348015610f9857600080fd5b5061065460048036036020811015610faf57600080fd5b50356001600160a01b0316613dda565b6001600160e01b031981166301ffc9a760e01b145b919050565b610fe233613de5565b80610ff15750610ff133613df9565b611036576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16611085576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6110e860398054806020026020016040519081016040528092919081815260200182805480156110de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c0575b505050505061352d565b81146111255760405162461bcd60e51b8152600401808060200182810382526023815260200180615b206023913960400191505060405180910390fd5b61113160396000615872565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806111a78484613e35565b90506111b281613de5565b6111f7576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611280945086935089915088908190840183828082843760009201919091525061119a92505050565b6001600160e01b031916146112cc576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561135257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611334575b5050505050905090565b60376020526000908152604090205460ff1681565b61137a33613de5565b8061138457503330145b6113c9576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6113d282614020565b611418576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006114248383613910565b905061142f8161403a565b600061143c6042546140d6565b90506001600160a01b038416156114d5576114616001600160a01b0385168285614229565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156114b857600080fd5b505af11580156114cc573d6000803e3d6000fd5b50505050611546565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561152c57600080fd5b505af1158015611540573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b60606115a133613de5565b806115b057506115b033613df9565b6115f5576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff161580156116285750603554600160a81b900460ff16155b1561164757600061163a600085613910565b90506116458161403a565b505b611659846001600160a01b0316614341565b8015611669575061166984614347565b156118515760008061167b8685614361565b6001600160a01b038216600090815260376020526040902054919350915060ff161580156116b35750603554600160a81b900460ff16155b156116d15760006116c48783613910565b90506116cf8161403a565b505b6116e46001600160a01b03871685614462565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061171757fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156117a9578181015183820152602001611791565b50505050905090810190601f1680156117d65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156118095781810151838201526020016117f1565b50505050905090810190601f1680156118365780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611aa5915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106118905780518252601f199092019160209182019101611871565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50915091508181906119875760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561194c578181015183820152602001611934565b50505050905090810190601f1680156119795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611a035781810151838201526020016119eb565b50505050905090810190601f168015611a305780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a63578181015183820152602001611a4b565b50505050905090810190601f168015611a905780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b611ab533613de5565b80611abf57503330145b611b04576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611b5c57603e54811015611b4e57603e819055604080548151838152602081019190915281516000805160206159ee833981519152929181900390910190a15b611b5781614513565b611b90565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611ba85750603d546112ee565b50603e546112ee565b611bba33614556565b611c0b576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b611c1a858585858560006145af565b5050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611352576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611334575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160b01b900460ff1615611cf557611cb133614556565b611cf0576040805162461bcd60e51b815260206004820152601c6024820152600080516020615950833981519152604482015290519081900360640190fd5b611d3e565b6036546001600160a01b03163314611d3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806159706022913960400191505060405180910390fd5b603b5460ff16611d8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611dee60398054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c057505050505061352d565b8114611e2b5760405162461bcd60e51b8152600401808060200182810382526023815260200180615b206023913960400191505060405180910390fd5b60005b603954811015611f12576037600060398381548110611e4957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611f0a5760016037600060398481548110611e8857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603980546038919083908110611ece57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611e2e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b03168152602001806020018281038252838181548152602001915080548015611f9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f77575b5050935050505060405180910390a1611fb060396000615872565b50603b805460ff19169055565b611fc633613de5565b80611fd057503330145b612015576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156120305750603b54610100900460ff16155b612081576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166120da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061211e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61212a603a8383615890565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926121999285918591829185019084908082843760009201919091525061352d92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806121fd57506121fd614907565b8061220b575060005460ff16155b6122465760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015612271576000805460ff1961ff0019909116610100171660011790555b61227961490d565b612282866149c1565b61228b84614a8f565b6122958888614b3c565b61229f8286614c9b565b604283905580156122b6576000805461ff00191690555b5050505050505050565b603554600160b01b900460ff161561231f576122db33614556565b61231a576040805162461bcd60e51b815260206004820152601c6024820152600080516020615950833981519152604482015290519081900360640190fd5b612368565b6036546001600160a01b031633146123685760405162461bcd60e51b81526004018080602001828103825260228152602001806159706022913960400191505060405180910390fd5b80603f54146123a85760405162461bcd60e51b8152600401808060200182810382526025815260200180615aae6025913960400191505060405180910390fd5b603d5481116123e85760405162461bcd60e51b81526004018080602001828103825260288152602001806159286028913960400191505060405180910390fd5b603e8190556123fa4262015180614dfd565b6040818155603e548151908152602081019290925280516000805160206159ee8339815191529281900390910190a1611b90603f54614513565b61243d33613de5565b612484576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166124e2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61253e33613de5565b612585576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a81b900460ff166125cd5760405162461bcd60e51b815260040180806020018281038252602f815260200180615a7f602f913960400191505060405180910390fd5b6001600160a01b038116612628576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612681576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b0381163014156126df576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60b01b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61276033613de5565b8061276a57503330145b6127af576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156127ca5750603b54610100900460ff16155b61281b576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156129375761287482828151811061286757fe5b6020026020010151613de5565b156128bf576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106128d657fe5b60200260200101516001600160a01b0316141561292f576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161284f565b50603b5462010000900460ff16612991576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b816129d5576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6129e160398484615890565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612a4e9285918591829185019084908082843760009201919091525061352d92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612ab833613de5565b612aff576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612b07614e57565b565b612b1233613de5565b80612b215750612b2133613df9565b612b66576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156122b657612b89866054614e9f565b888601805160148201516034909201805193995060609190911c96509094509092509050612bc26054612bbc8785614dfd565b90614dfd565b945086851115612c09576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612c1f57506040805160208101909152600081525b612c2a848483611596565b50612b76565b612c3933613de5565b612c80576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160b01b900460ff1615612cdf576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60b01b1916600160b01b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612d4033613de5565b612d87576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612de5576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612e2a5760405162461bcd60e51b8152600401808060200182810382526023815260200180615ad36023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612e8357604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b612f0633613de5565b80612f1057503330145b612f55576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080612f92576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612fdd576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff161580156130105750603554600160a81b900460ff16155b1561302e5760006130218484613910565b905061302c8161403a565b505b613039848484614ee1565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160b01b900460ff16156130e8576130a433614556565b6130e3576040805162461bcd60e51b815260206004820152601c6024820152600080516020615950833981519152604482015290519081900360640190fd5b613131565b6036546001600160a01b031633146131315760405162461bcd60e51b81526004018080602001828103825260228152602001806159706022913960400191505060405180910390fd5b611c1a858585858560016145af565b603554600160b01b900460ff161561319f5761315b33614556565b61319a576040805162461bcd60e51b815260206004820152601c6024820152600080516020615950833981519152604482015290519081900360640190fd5b6131e8565b6036546001600160a01b031633146131e85760405162461bcd60e51b81526004018080602001828103825260228152602001806159706022913960400191505060405180910390fd5b603b54610100900460ff1661323c576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61329d603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c057505050505061352d565b81146132da5760405162461bcd60e51b8152600401808060200182810382526023815260200180615b206023913960400191505060405180910390fd5b60005b603a5481101561347b5760376000603a83815481106132f857fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561347357600060376000603a848154811061333857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b60385461337c906001614e9f565b81101561344457603a828154811061339057fe5b600091825260209091200154603880546001600160a01b0390921691839081106133b657fe5b6000918252602090912001546001600160a01b0316141561343c576038805460001981019081106133e357fe5b600091825260209091200154603880546001600160a01b03909216918390811061340957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613444565b60010161336e565b50603880548061345057fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b6001016132dd565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156134fe57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116134e0575b5050935050505060405180910390a1613519603a6000615872565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b83811015613560578181015183820152602001613548565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61359033613de5565b8061359f575061359f33613df9565b6135e4576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff16613638576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613699603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c057505050505061352d565b81146136d65760405162461bcd60e51b8152600401808060200182810382526023815260200180615b206023913960400191505060405180910390fd5b6136e2603a6000615872565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b603554600160b01b900460ff1681565b6038818154811061375857fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b80806137c3576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6137cc33613de5565b806137db57506137db33613df9565b613820576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b81471161386d576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b6138768261403a565b61387e612aa0565b6001600160a01b03166108fc839081150290604051600060405180830381858888f193505050501580156138b6573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e336138e1612aa0565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b600061391a614f1b565b6001600160a01b0316836001600160a01b0316141561393a575080611203565b816001600160a01b038416156139c957600080600061395887614f91565b5050509350935093505080613974576000945050505050611203565b816139af576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6139c3836139bd888561511a565b90615173565b93505050505b60008060006139d66151b5565b5050509350935093505080613a28576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613a6e576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613a7c826139bd868661511a565b979650505050505050565b613a9033613de5565b80613a9a57503330145b613adf576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613bee57613b2b82828151811061286757fe5b15613b76576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613b8d57fe5b60200260200101516001600160a01b03161415613be6576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613b13565b50603b5462010000900460ff1615613c45576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613d365760376000858584818110613c6057fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613d2e57600160376000868685818110613c9c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613cf157fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613c48565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613dc657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613da8575b5050935050505060405180910390a1505050565b600061120382615324565b6035546001600160a01b0390811691161490565b603554600090600160b01b900460ff1615613e1e57613e1782614556565b9050610fd4565b506036546001600160a01b03828116911614610fd4565b60008151604114613e8d576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613efe5760405162461bcd60e51b81526004018080602001828103825260228152602001806159cc6022913960400191505060405180910390fd5b8060ff16601b14158015613f1657508060ff16601c14155b15613f525760405162461bcd60e51b8152600401808060200182810382526022815260200180615a0e6022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613fae573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614016576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b60008061402c83614f91565b509098975050505050505050565b6140426153b5565b80603e541015614099576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e546140a69082614e9f565b603e819055604080548151928352602083015280516000805160206159ee8339815191529281900390910190a150565b6033546000906001600160a01b0316614136576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561418257600080fd5b505afa158015614196573d6000803e3d6000fd5b505050506040513d60208110156141ac57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156141f757600080fd5b505afa15801561420b573d6000803e3d6000fd5b505050506040513d602081101561422157600080fd5b505192915050565b8015806142af575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561428157600080fd5b505afa158015614295573d6000803e3d6000fd5b505050506040513d60208110156142ab57600080fd5b5051155b6142ea5760405162461bcd60e51b8152600401808060200182810382526036815260200180615b436036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261433c908490614462565b505050565b3b151590565b60008061435383614f91565b509198975050505050505050565b60008061436f603c546140d6565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156143da5781810151838201526020016143c2565b50505050905090810190601f1680156144075780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b15801561442457600080fd5b505afa158015614438573d6000803e3d6000fd5b505050506040513d604081101561444e57600080fd5b508051602090910151909590945092505050565b60606144b7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166154029092919063ffffffff16565b80519091501561433c578080602001905160208110156144d657600080fd5b505161433c5760405162461bcd60e51b815260040180806020018281038252602a815260200180615af6602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b60006145636034546140d6565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156141f757600080fd5b6000469050600061462682308a8a8a60405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120615411565b9050631626ba7e60e01b6001600160e01b03191661467a8287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119a92505050565b6001600160e01b031916146146c6576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6041548814614708576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b614710614e57565b6035805460ff60a81b1916600160a81b85151502179055604080516020601f8901819004810282018101909252878152614764918990899081908401838280828437600092019190915250612b0992505050565b6035805460ff60a81b1916905560405160009060609030908a908a90808383808284376040519201945060009350909150508083038183865af19150503d80600081146147cd576040519150601f19603f3d011682016040523d82523d6000602084013e6147d2565b606091505b50915091508181906148255760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b507f7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec89898388604051808060200180602001841515815260200183810383528787828181526020019250808284376000838201819052601f909101601f191690920185810384528751815287516020918201939189019250908190849084905b838110156148bd5781810151838201526020016148a5565b50505050905090810190601f1680156148ea5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a150505050505050505050565b303b1590565b600054610100900460ff16806149265750614926614907565b80614934575060005460ff16155b61496f5760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff1615801561499a576000805460ff1961ff0019909116610100171660011790555b6035805460ff60b01b1916600160b01b1790558015611b90576000805461ff001916905550565b600054610100900460ff16806149da57506149da614907565b806149e8575060005460ff16155b614a235760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015614a4e576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615614a7957603380546001600160a01b0319166001600160a01b0384161790555b8015614a8b576000805461ff00191690555b5050565b600054610100900460ff1680614aa85750614aa8614907565b80614ab6575060005460ff16155b614af15760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015614b1c576000805460ff1961ff0019909116610100171660011790555b8115614a795760348290558015614a8b576000805461ff00191690555050565b600054610100900460ff1680614b555750614b55614907565b80614b63575060005460ff16155b614b9e5760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015614bc9576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614c4157604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1801561433c576000805461ff0019169055505050565b600054610100900460ff1680614cb45750614cb4614907565b80614cc2575060005460ff16155b614cfd5760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff16158015614d28576000805460ff1961ff0019909116610100171660011790555b614d3182615462565b6000614d3b6151b5565b505050505091505060008111614d88576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614da74262015180614dfd565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a15050801561433c576000805461ff0019169055505050565b600082820183811015611aa5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b6000611aa583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061550f565b6001600160a01b038216614f0757614f026001600160a01b03841682615569565b61433c565b61433c6001600160a01b038316848361564e565b6000614f28603c546140d6565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614f6057600080fd5b505afa158015614f74573d6000803e3d6000fd5b505050506040513d6020811015614f8a57600080fd5b5051905090565b6060600080600080600080614fa7603c546140d6565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614ff357600080fd5b505afa158015615007573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561503057600080fd5b8101908080516040519392919084600160201b82111561504f57600080fd5b90830190602082018581111561506457600080fd5b8251600160201b81118282018810171561507d57600080fd5b82525081516020918201929091019080838360005b838110156150aa578181015183820152602001615092565b50505050905090810190601f1680156150d75780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261512957506000611203565b8282028284828161513657fe5b0414611aa55760405162461bcd60e51b8152600401808060200182810382526021815260200180615a306021913960400191505060405180910390fd5b6000611aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506156a0565b60606000806000806000806151cb603c546140d6565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561520357600080fd5b505afa158015615217573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561524057600080fd5b8101908080516040519392919084600160201b82111561525f57600080fd5b90830190602082018581111561527457600080fd5b8251600160201b81118282018810171561528d57600080fd5b82525081516020918201929091019080838360005b838110156152ba5781810151838201526020016152a2565b50505050905090810190601f1680156152e75780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b038216156153ae57604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561537b57600080fd5b505afa15801561538f573d6000803e3d6000fd5b505050506040513d60208110156153a557600080fd5b50519050610fd4565b5047610fd4565b604054421115612b07576153cc4262015180614dfd565b6040818155603d54603e8190558151908152602081019290925280516000805160206159ee8339815191529281900390910190a1565b60606112d88484600085615705565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600054610100900460ff168061547b575061547b614907565b80615489575060005460ff16155b6154c45760405162461bcd60e51b815260040180806020018281038252602e815260200180615a51602e913960400191505060405180910390fd5b600054610100900460ff161580156154ef576000805460ff1961ff0019909116610100171660011790555b8115614a7957603c8290558015614a8b576000805461ff00191690555050565b600081848411156155615760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b505050900390565b804710156155be576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114615609576040519150601f19603f3d011682016040523d82523d6000602084013e61560e565b606091505b505090508061433c5760405162461bcd60e51b815260040180806020018281038252603a815260200180615992603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261433c908490614462565b600081836156ef5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b5060008385816156fb57fe5b0495945050505050565b606061571085614341565b615761576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106157a05780518252601f199092019160209182019101615781565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615802576040519150601f19603f3d011682016040523d82523d6000602084013e615807565b606091505b5091509150811561581b5791506112d89050565b80511561582b5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561194c578181015183820152602001611934565b5080546000825590600052602060002090810190611b9091906158f3565b8280548282559060005260206000209081019282156158e3579160200282015b828111156158e35781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906158b0565b506158ef929150615908565b5090565b5b808211156158ef57600081556001016158f4565b5b808211156158ef5780546001600160a01b031916815560010161590956fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f742061204d6f6e6f6c697468203246410000000073656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656453657474696e67206120706572736f6e616c203246412072657175697265732070726976696c65676564206d6f6465636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220ce1c1e207b322c748ee52c4c84c45f11bab8722d23f19c40dad6b2b387939cc464736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b50615a27806200008a6000396000f3fe6080604052600436106102ae5760003560e01c80637b580e7511610175578063cbd2ac68116100dc578063d251fefc11610095578063e61c51ca1161006f578063e61c51ca14610eae578063f36febda14610ed8578063f421764814610f11578063f8b2cb4f14610f8c576102ae565b8063d251fefc14610e5a578063de212bf314610e84578063e2b4ce9714610e99576102ae565b8063cbd2ac6814610d19578063cccdc55614610d43578063cd7958dd14610d58578063ce0b5bd514610e06578063ced99cce14610e30578063cf0a866b14610e45576102ae565b8063aaf1fc621161012e578063aaf1fc6214610aee578063ad95580b14610b9f578063b242e53414610bb4578063be40ba7914610bef578063beabacc814610c04578063c1e559a314610c47576102ae565b80637b580e75146109ec5780637d73b23114610a1f5780637fd004fa14610a34578063877337b014610aaf5780638da5cb5b14610ac457806390e690c714610ad9576102ae565b8063458d07f2116102195780635adc02ab116101d25780635adc02ab146108985780636137d670146108c257806369efdfc01461093d5780636c37a7e614610998578063715018a6146109c2578063747c31d6146109d7576102ae565b8063458d07f21461072c57806345b12efc1461075657806346efe0ed1461076b57806347b55a9d1461083d57806347d125af146108525780634d9aa24814610883576102ae565b806326d05ab21161026b57806326d05ab214610566578063294f40251461057b57806332531c3c146105e05780633a43199f146106135780633b8252fa1461063f5780633f579f4214610666576102ae565b806301ffc9a7146102b3578063100f23fd146102fb5780631127b57e146103275780631626ba7e146103b157806320c13b0b146104865780632121dc7514610551575b600080fd5b3480156102bf57600080fd5b506102e7600480360360208110156102d657600080fd5b50356001600160e01b031916610fbf565b604080519115158252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b5035610fd9565b005b34801561033357600080fd5b5061033c611179565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561037657818101518382015260200161035e565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103bd57600080fd5b50610469600480360360408110156103d457600080fd5b81359190810190604081016020820135600160201b8111156103f557600080fd5b82018360208201111561040757600080fd5b803590602001918460018302840111600160201b8311171561042857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061119a945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561049257600080fd5b50610469600480360360408110156104a957600080fd5b810190602081018135600160201b8111156104c357600080fd5b8201836020820111156104d557600080fd5b803590602001918460018302840111600160201b831117156104f657600080fd5b919390929091602081019035600160201b81111561051357600080fd5b82018360208201111561052557600080fd5b803590602001918460018302840111600160201b8311171561054657600080fd5b509092509050611209565b34801561055d57600080fd5b506102e76112e0565b34801561057257600080fd5b506102e76112f1565b34801561058757600080fd5b506105906112fa565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105cc5781810151838201526020016105b4565b505050509050019250505060405180910390f35b3480156105ec57600080fd5b506102e76004803603602081101561060357600080fd5b50356001600160a01b031661135c565b6103256004803603604081101561062957600080fd5b506001600160a01b038135169060200135611371565b34801561064b57600080fd5b50610654611590565b60408051918252519081900360200190f35b34801561067257600080fd5b5061033c6004803603606081101561068957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156106b857600080fd5b8201836020820111156106ca57600080fd5b803590602001918460018302840111600160201b831117156106eb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611596945050505050565b34801561073857600080fd5b506103256004803603602081101561074f57600080fd5b5035611aac565b34801561076257600080fd5b50610654611b93565b34801561077757600080fd5b506103256004803603606081101561078e57600080fd5b81359190810190604081016020820135600160201b8111156107af57600080fd5b8201836020820111156107c157600080fd5b803590602001918460018302840111600160201b831117156107e257600080fd5b919390929091602081019035600160201b8111156107ff57600080fd5b82018360208201111561081157600080fd5b803590602001918460018302840111600160201b8311171561083257600080fd5b509092509050611bb1565b34801561084957600080fd5b50610590611c21565b34801561085e57600080fd5b50610867611c81565b604080516001600160a01b039092168252519081900360200190f35b34801561088f57600080fd5b50610654611c90565b3480156108a457600080fd5b50610325600480360360208110156108bb57600080fd5b5035611c96565b3480156108ce57600080fd5b50610325600480360360208110156108e557600080fd5b810190602081018135600160201b8111156108ff57600080fd5b82018360208201111561091157600080fd5b803590602001918460208302840111600160201b8311171561093257600080fd5b509092509050611fbd565b34801561094957600080fd5b50610325600480360360e081101561096057600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356121e4565b3480156109a457600080fd5b50610325600480360360208110156109bb57600080fd5b50356122c0565b3480156109ce57600080fd5b50610325612434565b3480156109e357600080fd5b5061065461252f565b3480156109f857600080fd5b5061032560048036036020811015610a0f57600080fd5b50356001600160a01b0316612535565b348015610a2b57600080fd5b50610867612700565b348015610a4057600080fd5b5061032560048036036020811015610a5757600080fd5b810190602081018135600160201b811115610a7157600080fd5b820183602082011115610a8357600080fd5b803590602001918460208302840111600160201b83111715610aa457600080fd5b50909250905061270f565b348015610abb57600080fd5b50610654612a52565b348015610ad057600080fd5b50610867612a58565b348015610ae557600080fd5b50610325612a67565b348015610afa57600080fd5b5061032560048036036020811015610b1157600080fd5b810190602081018135600160201b811115610b2b57600080fd5b820183602082011115610b3d57600080fd5b803590602001918460018302840111600160201b83111715610b5e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612ac1945050505050565b348015610bab57600080fd5b50610325612be8565b348015610bc057600080fd5b5061032560048036036040811015610bd757600080fd5b506001600160a01b0381351690602001351515612cef565b348015610bfb57600080fd5b506102e7612ea6565b348015610c1057600080fd5b5061032560048036036060811015610c2757600080fd5b506001600160a01b03813581169160208101359091169060400135612eb5565b348015610c5357600080fd5b5061032560048036036060811015610c6a57600080fd5b81359190810190604081016020820135600160201b811115610c8b57600080fd5b820183602082011115610c9d57600080fd5b803590602001918460018302840111600160201b83111715610cbe57600080fd5b919390929091602081019035600160201b811115610cdb57600080fd5b820183602082011115610ced57600080fd5b803590602001918460018302840111600160201b83111715610d0e57600080fd5b509092509050613041565b348015610d2557600080fd5b5061032560048036036020811015610d3c57600080fd5b50356130f8565b348015610d4f57600080fd5b506106546134df565b348015610d6457600080fd5b5061065460048036036020811015610d7b57600080fd5b810190602081018135600160201b811115610d9557600080fd5b820183602082011115610da757600080fd5b803590602001918460208302840111600160201b83111715610dc857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506134e5945050505050565b348015610e1257600080fd5b5061032560048036036020811015610e2957600080fd5b503561353f565b348015610e3c57600080fd5b506102e76136e3565b348015610e5157600080fd5b506102e76136f3565b348015610e6657600080fd5b5061086760048036036020811015610e7d57600080fd5b5035613703565b348015610e9057600080fd5b506102e761372a565b348015610ea557600080fd5b50610654613738565b348015610eba57600080fd5b5061032560048036036020811015610ed157600080fd5b503561373e565b348015610ee457600080fd5b5061065460048036036040811015610efb57600080fd5b506001600160a01b0381351690602001356138c8565b348015610f1d57600080fd5b5061032560048036036020811015610f3457600080fd5b810190602081018135600160201b811115610f4e57600080fd5b820183602082011115610f6057600080fd5b803590602001918460208302840111600160201b83111715610f8157600080fd5b509092509050613a3f565b348015610f9857600080fd5b5061065460048036036020811015610faf57600080fd5b50356001600160a01b0316613d92565b6001600160e01b031981166301ffc9a760e01b145b919050565b610fe233613d9d565b80610ff15750610ff133613db1565b611036576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16611085576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6110e860398054806020026020016040519081016040528092919081815260200182805480156110de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c0575b50505050506134e5565b81146111255760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b6111316039600061571a565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806111a78484613ded565b90506111b281613d9d565b6111f7576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611280945086935089915088908190840183828082843760009201919091525061119a92505050565b6001600160e01b031916146112cc576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561135257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611334575b5050505050905090565b60376020526000908152604090205460ff1681565b61137a33613d9d565b8061138457503330145b6113c9576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6113d282613fd8565b611418576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061142483836138c8565b905061142f81613ff2565b600061143c60425461408e565b90506001600160a01b038416156114d5576114616001600160a01b03851682856141e1565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156114b857600080fd5b505af11580156114cc573d6000803e3d6000fd5b50505050611546565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561152c57600080fd5b505af1158015611540573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b60606115a133613d9d565b806115b057506115b033613db1565b6115f5576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff161580156116285750603554600160a81b900460ff16155b1561164757600061163a6000856138c8565b905061164581613ff2565b505b611659846001600160a01b03166142f9565b80156116695750611669846142ff565b156118515760008061167b8685614319565b6001600160a01b038216600090815260376020526040902054919350915060ff161580156116b35750603554600160a81b900460ff16155b156116d15760006116c487836138c8565b90506116cf81613ff2565b505b6116e46001600160a01b0387168561441a565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061171757fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156117a9578181015183820152602001611791565b50505050905090810190601f1680156117d65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156118095781810151838201526020016117f1565b50505050905090810190601f1680156118365780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611aa5915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106118905780518252601f199092019160209182019101611871565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50915091508181906119875760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561194c578181015183820152602001611934565b50505050905090810190601f1680156119795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611a035781810151838201526020016119eb565b50505050905090810190601f168015611a305780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a63578181015183820152602001611a4b565b50505050905090810190601f168015611a905780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b611ab533613d9d565b80611abf57503330145b611b04576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611b5c57603e54811015611b4e57603e81905560408054815183815260208101919091528151600080516020615896833981519152929181900390910190a15b611b57816144cb565b611b90565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611ba85750603d546112ee565b50603e546112ee565b611bba3361450e565b611c0b576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b611c1a85858585856000614567565b5050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611352576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611334575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160b01b900460ff1615611cf557611cb13361450e565b611cf0576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b611d3e565b6036546001600160a01b03163314611d3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b603b5460ff16611d8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611dee60398054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b8114611e2b5760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b60005b603954811015611f12576037600060398381548110611e4957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611f0a5760016037600060398481548110611e8857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603980546038919083908110611ece57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611e2e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b03168152602001806020018281038252838181548152602001915080548015611f9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f77575b5050935050505060405180910390a1611fb06039600061571a565b50603b805460ff19169055565b611fc633613d9d565b80611fd057503330145b612015576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156120305750603b54610100900460ff16155b612081576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166120da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061211e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61212a603a8383615738565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d19285928592612199928591859182918501908490808284376000920191909152506134e592505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806121fd57506121fd6147af565b8061220b575060005460ff16155b6122465760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015612271576000805460ff1961ff0019909116610100171660011790555b6122796147b5565b61228286614869565b61228b84614937565b61229588886149e4565b61229f8286614b43565b604283905580156122b6576000805461ff00191690555b5050505050505050565b603554600160b01b900460ff161561231f576122db3361450e565b61231a576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b612368565b6036546001600160a01b031633146123685760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b80603f54146123a85760405162461bcd60e51b81526004018080602001828103825260258152602001806159276025913960400191505060405180910390fd5b603d5481116123e85760405162461bcd60e51b81526004018080602001828103825260288152602001806157d06028913960400191505060405180910390fd5b603e8190556123fa4262015180614ca5565b6040818155603e548151908152602081019290925280516000805160206158968339815191529281900390910190a1611b90603f546144cb565b61243d33613d9d565b612484576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166124e2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61253e33613d9d565b612585576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6001600160a01b0381166125e0576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612639576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b038116301415612697576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60b01b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61271833613d9d565b8061272257503330145b612767576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156127825750603b54610100900460ff16155b6127d3576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156128ef5761282c82828151811061281f57fe5b6020026020010151613d9d565b15612877576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061288e57fe5b60200260200101516001600160a01b031614156128e7576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612807565b50603b5462010000900460ff16612949576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8161298d576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61299960398484615738565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612a06928591859182918501908490808284376000920191909152506134e592505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612a7033613d9d565b612ab7576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612abf614cff565b565b612aca33613d9d565b80612ad95750612ad933613db1565b612b1e576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156122b657612b41866054614d47565b888601805160148201516034909201805193995060609190911c96509094509092509050612b7a6054612b748785614ca5565b90614ca5565b945086851115612bc1576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612bd757506040805160208101909152600081525b612be2848483611596565b50612b2e565b612bf133613d9d565b612c38576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160b01b900460ff1615612c97576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60b01b1916600160b01b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612cf833613d9d565b612d3f576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612d9d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612de25760405162461bcd60e51b815260040180806020018281038252602381526020018061594c6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612e3b57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b612ebe33613d9d565b80612ec857503330145b612f0d576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080612f4a576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612f95576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff16158015612fc85750603554600160a81b900460ff16155b15612fe6576000612fd984846138c8565b9050612fe481613ff2565b505b612ff1848484614d89565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160b01b900460ff16156130a05761305c3361450e565b61309b576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b6130e9565b6036546001600160a01b031633146130e95760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b611c1a85858585856001614567565b603554600160b01b900460ff1615613157576131133361450e565b613152576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b6131a0565b6036546001600160a01b031633146131a05760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b603b54610100900460ff166131f4576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613255603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b81146132925760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b60005b603a548110156134335760376000603a83815481106132b057fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561342b57600060376000603a84815481106132f057fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603854613334906001614d47565b8110156133fc57603a828154811061334857fe5b600091825260209091200154603880546001600160a01b03909216918390811061336e57fe5b6000918252602090912001546001600160a01b031614156133f45760388054600019810190811061339b57fe5b600091825260209091200154603880546001600160a01b0390921691839081106133c157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506133fc565b600101613326565b50603880548061340857fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101613295565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156134b657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613498575b5050935050505060405180910390a16134d1603a600061571a565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b83811015613518578181015183820152602001613500565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61354833613d9d565b80613557575061355733613db1565b61359c576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff166135f0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613651603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b811461368e5760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b61369a603a600061571a565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b603554600160b01b900460ff1681565b6038818154811061371057fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b808061377b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b61378433613d9d565b80613793575061379333613db1565b6137d8576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b814711613825576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61382e82613ff2565b613836612a58565b6001600160a01b03166108fc839081150290604051600060405180830381858888f1935050505015801561386e573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613899612a58565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b60006138d2614dc3565b6001600160a01b0316836001600160a01b031614156138f2575080611203565b816001600160a01b0384161561398157600080600061391087614e39565b505050935093509350508061392c576000945050505050611203565b81613967576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b61397b836139758885614fc2565b9061501b565b93505050505b600080600061398e61505d565b50505093509350935050806139e0576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613a26576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613a34826139758686614fc2565b979650505050505050565b613a4833613d9d565b80613a5257503330145b613a97576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613ba657613ae382828151811061281f57fe5b15613b2e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613b4557fe5b60200260200101516001600160a01b03161415613b9e576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613acb565b50603b5462010000900460ff1615613bfd576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613cee5760376000858584818110613c1857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613ce657600160376000868685818110613c5457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613ca957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613c00565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613d7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613d60575b5050935050505060405180910390a1505050565b6000611203826151cc565b6035546001600160a01b0390811691161490565b603554600090600160b01b900460ff1615613dd657613dcf8261450e565b9050610fd4565b506036546001600160a01b03828116911614610fd4565b60008151604114613e45576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613eb65760405162461bcd60e51b81526004018080602001828103825260228152602001806158746022913960400191505060405180910390fd5b8060ff16601b14158015613ece57508060ff16601c14155b15613f0a5760405162461bcd60e51b81526004018080602001828103825260228152602001806158b66022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613f66573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613fce576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613fe483614e39565b509098975050505050505050565b613ffa61525d565b80603e541015614051576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e5461405e9082614d47565b603e819055604080548151928352602083015280516000805160206158968339815191529281900390910190a150565b6033546000906001600160a01b03166140ee576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561413a57600080fd5b505afa15801561414e573d6000803e3d6000fd5b505050506040513d602081101561416457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156141af57600080fd5b505afa1580156141c3573d6000803e3d6000fd5b505050506040513d60208110156141d957600080fd5b505192915050565b801580614267575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561423957600080fd5b505afa15801561424d573d6000803e3d6000fd5b505050506040513d602081101561426357600080fd5b5051155b6142a25760405162461bcd60e51b81526004018080602001828103825260368152602001806159bc6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142f490849061441a565b505050565b3b151590565b60008061430b83614e39565b509198975050505050505050565b600080614327603c5461408e565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561439257818101518382015260200161437a565b50505050905090810190601f1680156143bf5780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156143dc57600080fd5b505afa1580156143f0573d6000803e3d6000fd5b505050506040513d604081101561440657600080fd5b508051602090910151909590945092505050565b606061446f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166152aa9092919063ffffffff16565b8051909150156142f45780806020019051602081101561448e57600080fd5b50516142f45760405162461bcd60e51b815260040180806020018281038252602a81526020018061596f602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b600061451b60345461408e565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156141af57600080fd5b600046905060006145de82308a8a8a60405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b81526014018481526020018383808284378083019250505095505050505050604051602081830303815290604052805190602001206152b9565b9050631626ba7e60e01b6001600160e01b0319166146328287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119a92505050565b6001600160e01b0319161461467e576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b60415488146146c0576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b6146c8614cff565b6035805460ff60a81b1916600160a81b85151502179055604080516020601f890181900481028201810190925287815261471c918990899081908401838280828437600092019190915250612ac192505050565b6035805460ff60a81b191690556040805184151591810191909152606080825281018790527f7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec908890889086908060208101608082018686808284376000838201819052601f909101601f1916909201948503909252835250506040805191829003019350915050a15050505050505050565b303b1590565b600054610100900460ff16806147ce57506147ce6147af565b806147dc575060005460ff16155b6148175760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614842576000805460ff1961ff0019909116610100171660011790555b6035805460ff60b01b1916600160b01b1790558015611b90576000805461ff001916905550565b600054610100900460ff168061488257506148826147af565b80614890575060005460ff16155b6148cb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff161580156148f6576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561492157603380546001600160a01b0319166001600160a01b0384161790555b8015614933576000805461ff00191690555b5050565b600054610100900460ff168061495057506149506147af565b8061495e575060005460ff16155b6149995760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff161580156149c4576000805460ff1961ff0019909116610100171660011790555b81156149215760348290558015614933576000805461ff00191690555050565b600054610100900460ff16806149fd57506149fd6147af565b80614a0b575060005460ff16155b614a465760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614a71576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614ae957604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a180156142f4576000805461ff0019169055505050565b600054610100900460ff1680614b5c5750614b5c6147af565b80614b6a575060005460ff16155b614ba55760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614bd0576000805460ff1961ff0019909116610100171660011790555b614bd98261530a565b6000614be361505d565b505050505091505060008111614c30576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614c4f4262015180614ca5565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a1505080156142f4576000805461ff0019169055505050565b600082820183811015611aa5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b6000611aa583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506153b7565b6001600160a01b038216614daf57614daa6001600160a01b03841682615411565b6142f4565b6142f46001600160a01b03831684836154f6565b6000614dd0603c5461408e565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614e0857600080fd5b505afa158015614e1c573d6000803e3d6000fd5b505050506040513d6020811015614e3257600080fd5b5051905090565b6060600080600080600080614e4f603c5461408e565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614e9b57600080fd5b505afa158015614eaf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614ed857600080fd5b8101908080516040519392919084600160201b821115614ef757600080fd5b908301906020820185811115614f0c57600080fd5b8251600160201b811182820188101715614f2557600080fd5b82525081516020918201929091019080838360005b83811015614f52578181015183820152602001614f3a565b50505050905090810190601f168015614f7f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614fd157506000611203565b82820282848281614fde57fe5b0414611aa55760405162461bcd60e51b81526004018080602001828103825260218152602001806158d86021913960400191505060405180910390fd5b6000611aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615548565b6060600080600080600080615073603c5461408e565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150ab57600080fd5b505afa1580156150bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156150e857600080fd5b8101908080516040519392919084600160201b82111561510757600080fd5b90830190602082018581111561511c57600080fd5b8251600160201b81118282018810171561513557600080fd5b82525081516020918201929091019080838360005b8381101561516257818101518382015260200161514a565b50505050905090810190601f16801561518f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561525657604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561522357600080fd5b505afa158015615237573d6000803e3d6000fd5b505050506040513d602081101561524d57600080fd5b50519050610fd4565b5047610fd4565b604054421115612abf576152744262015180614ca5565b6040818155603d54603e8190558151908152602081019290925280516000805160206158968339815191529281900390910190a1565b60606112d884846000856155ad565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600054610100900460ff168061532357506153236147af565b80615331575060005460ff16155b61536c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015615397576000805460ff1961ff0019909116610100171660011790555b811561492157603c8290558015614933576000805461ff00191690555050565b600081848411156154095760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b505050900390565b80471015615466576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146154b1576040519150601f19603f3d011682016040523d82523d6000602084013e6154b6565b606091505b50509050806142f45760405162461bcd60e51b815260040180806020018281038252603a81526020018061583a603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526142f490849061441a565b600081836155975760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b5060008385816155a357fe5b0495945050505050565b60606155b8856142f9565b615609576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106156485780518252601f199092019160209182019101615629565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146156aa576040519150601f19603f3d011682016040523d82523d6000602084013e6156af565b606091505b509150915081156156c35791506112d89050565b8051156156d35780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561194c578181015183820152602001611934565b5080546000825590600052602060002090810190611b90919061579b565b82805482825590600052602060002090810192821561578b579160200282015b8281111561578b5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615758565b506157979291506157b0565b5090565b5b80821115615797576000815560010161579c565b5b808211156157975780546001600160a01b03191681556001016157b156fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f742061204d6f6e6f6c697468203246410000000073656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220d269eb71247e2e375bb65e1da9e815f146e7370aefb0c697c6031b80071c787464736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index 13280c5e..5b2a44a9 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220abad9426a2fda9f6fb07e8b6cd83bfa530dcbd47fd5d1700c86f21554dd525cb64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220df928773237f3480de76716c2be1536d64a8c25b91dbe8ea70efaf3e7c7eab6164736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { From 617e961c0c844dbc78ef91125c53dbd3a9d950ed Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Thu, 10 Dec 2020 16:25:08 +0100 Subject: [PATCH 60/66] tests: add missing tests --- test/gas-proxy/execute_metaTransaction_test.go | 3 --- test/wallet/relay_test.go | 8 ++++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/test/gas-proxy/execute_metaTransaction_test.go b/test/gas-proxy/execute_metaTransaction_test.go index 3de94ba9..d9fe24f2 100644 --- a/test/gas-proxy/execute_metaTransaction_test.go +++ b/test/gas-proxy/execute_metaTransaction_test.go @@ -87,10 +87,7 @@ var _ = Describe("ExecuteMetaTransaction", func() { tx, err := GasProxy.ExecuteTransaction(Controller.TransactOpts(ethertest.WithGasLimit(6000000)), ProxyAddress, big.NewInt(0), data) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - //returnData, _ := ethCall(tx) - //Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("available smaller than amount")) Expect(isSuccessful(tx)).To(BeTrue()) - }) It("should decrease the wallet's ETH balance ", func() { diff --git a/test/wallet/relay_test.go b/test/wallet/relay_test.go index d1f76af3..74a23b3c 100644 --- a/test/wallet/relay_test.go +++ b/test/wallet/relay_test.go @@ -22,6 +22,14 @@ var _ = Describe("relay Tx", func() { BankAccount.MustTransfer(Backend, WalletProxyAddress, EthToWei(2)) }) + When("relayNonce variable initialized to 0", func() { + It("should succeed", func() { + nonce, err := WalletProxy.RelayNonce(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(nonce.String()).To(Equal("0")) + }) + }) + When("a non-owner account tries to increase the nonce", func() { It("should fail", func() { tx, err := WalletProxy.IncreaseRelayNonce(Controller.TransactOpts(ethertest.WithGasLimit(60000))) From 72a2891423841e472a7cfd3f1be18b1de1819973 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 6 Jan 2021 17:55:16 +0100 Subject: [PATCH 61/66] test: improve descriptions in 2fa tests --- test/wallet/2fa_test.go | 57 +++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/test/wallet/2fa_test.go b/test/wallet/2fa_test.go index 9f92ec36..f663f913 100644 --- a/test/wallet/2fa_test.go +++ b/test/wallet/2fa_test.go @@ -11,7 +11,7 @@ import ( var _ = Describe("2FA", func() { - It("should be true", func() { + It("should be true when checking monolith 2FA variable value", func() { oo, err := WalletProxy.Monolith2FA(nil) Expect(err).ToNot(HaveOccurred()) Expect(oo).To(BeTrue()) @@ -26,7 +26,7 @@ var _ = Describe("2FA", func() { Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not owner")) }) - It("should fail if Monolith 2FA is already enabled", func() { + It("should fail to set Monolith 2FA if Monolith 2FA is already enabled", func() { tx, err := WalletProxy.SetMonolith2FA(Owner.TransactOpts(ethertest.WithGasLimit(60000))) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -53,7 +53,7 @@ var _ = Describe("2FA", func() { Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not owner")) }) - It("should NOT allow to set the personal 2FA to address 0x0", func() { + It("should NOT allow an owner to set the personal 2FA to address 0x0", func() { tx, err := WalletProxy.SetPersonal2FA(Owner.TransactOpts(ethertest.WithGasLimit(60000)), common.HexToAddress(("0x0"))) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -62,7 +62,7 @@ var _ = Describe("2FA", func() { Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("2FA cannot be set to zero")) }) - It("should NOT allow to set the personal 2FA to the same address", func() { + It("should NOT allow an owner to set the personal 2FA to the same address", func() { tx, err := WalletProxy.SetPersonal2FA(Owner.TransactOpts(ethertest.WithGasLimit(60000)), Owner.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -76,16 +76,9 @@ var _ = Describe("2FA", func() { Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("address already set")) }) - It("should fail if monolith 2FA is already enabled", func() { - tx, err := WalletProxy.SetMonolith2FA(Owner.TransactOpts(ethertest.WithGasLimit(60000))) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - returnData, _ := ethCall(tx) - Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("monolith2FA already enabled")) - }) + //TODO add privileged test - When("the owner submits a whitelist addition", func() { + When("the owner submits an account whitelist addition", func() { BeforeEach(func() { tx, err := WalletProxy.SetWhitelist(Owner.TransactOpts(), []common.Address{common.HexToAddress("0x1")}) Expect(err).ToNot(HaveOccurred()) @@ -98,7 +91,7 @@ var _ = Describe("2FA", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - When("the a random account tries to confirm the addition to the whitelist", func() { + When("a random account tries to confirm the account addition to the whitelist", func() { It("should fail", func() { pwl, err := WalletProxy.PendingWhitelistAddition(nil) Expect(err).ToNot(HaveOccurred()) @@ -113,7 +106,7 @@ var _ = Describe("2FA", func() { }) }) - When("the controller tries to confirm the addition to the whitelist", func() { + When("the controller (Monolith 2FA) tries to confirm the account addition to the whitelist", func() { It("should succeed", func() { pwl, err := WalletProxy.PendingWhitelistAddition(nil) Expect(err).ToNot(HaveOccurred()) @@ -127,7 +120,7 @@ var _ = Describe("2FA", func() { }) }) - When("the owner submits a daily limit of 12K $USD", func() { + When("the owner submits a daily limit of 12k USD", func() { BeforeEach(func() { tx, err := WalletProxy.SubmitDailyLimitUpdate(Owner.TransactOpts(), EthToWei(12000)) Expect(err).ToNot(HaveOccurred()) @@ -161,19 +154,19 @@ var _ = Describe("2FA", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should be false", func() { + It("should return false when checking monolith2FA variable value", func() { m2fa, err := WalletProxy.Monolith2FA(nil) Expect(err).ToNot(HaveOccurred()) Expect(m2fa).To(BeFalse()) }) - It("should set the 2FA address", func() { + It("should set the random account address as personal 2FA", func() { p2fa, err := WalletProxy.Personal2FA(nil) Expect(err).ToNot(HaveOccurred()) Expect(p2fa).To(Equal(RandomAccount.Address())) }) - It("Should emit a SetPersonal2Fa event", func() { + It("should emit a SetPersonal2Fa event", func() { it, err := WalletProxy.FilterSetPersonal2FA(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) @@ -183,7 +176,7 @@ var _ = Describe("2FA", func() { Expect(evt.P2FA).To(Equal(RandomAccount.Address())) }) - It("should fail when controller tries to confirm", func() { + It("should fail when controller (ex Monolith 2FA) tries to confirm the limit update", func() { tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(ethertest.WithGasLimit(80000)), EthToWei(12000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -200,17 +193,18 @@ var _ = Describe("2FA", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should be true", func() { + It("should be true when checking monolith 2FA variable value", func() { m2fa, err := WalletProxy.Monolith2FA(nil) Expect(err).ToNot(HaveOccurred()) Expect(m2fa).To(BeTrue()) }) - It("should set the 2FA address to 0", func() { + It("should set the 2FA address to 0x0 (setting to 0x0 can be done only when calling SetMonolith2FA)", func() { p2fa, err := WalletProxy.Personal2FA(nil) Expect(err).ToNot(HaveOccurred()) Expect(p2fa).To(Equal(common.HexToAddress("0x0"))) }) + It("Should emit a SetMonolith2FA event", func() { it, err := WalletProxy.FilterSetMonolith2FA(nil) Expect(err).ToNot(HaveOccurred()) @@ -220,14 +214,14 @@ var _ = Describe("2FA", func() { Expect(evt.Sender).To(Equal(Owner.Address())) }) - It("should succeed when the controller confirms the limit update", func() { + It("should succeed when the controller (Monolith 2FA) confirms the limit update", func() { tx, err := WalletProxy.ConfirmDailyLimitUpdate(Controller.TransactOpts(), EthToWei(12000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should fail when a random account tries to confirm", func() { + It("should fail when a random account tries to confirm the daily limit update", func() { tx, err := WalletProxy.ConfirmDailyLimitUpdate(RandomAccount.TransactOpts(ethertest.WithGasLimit(80000)), EthToWei(12000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -237,26 +231,21 @@ var _ = Describe("2FA", func() { }) }) - When("the random account confirms the new limit", func() { + When("the random account confirms the new limit update", func() { BeforeEach(func() { - //tx, err := WalletProxy.SetPersonal2FA(Owner.TransactOpts(), RandomAccount.Address()) - //Expect(err).ToNot(HaveOccurred()) - //Backend.Commit() - //Expect(isSuccessful(tx)).To(BeTrue()) - tx, err := WalletProxy.ConfirmDailyLimitUpdate(RandomAccount.TransactOpts(), EthToWei(12000)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should have 12K $USD available for spending", func() { + It("should have 12k USD available for spending", func() { tl, err := WalletProxy.DailyLimitAvailable(nil) Expect(err).ToNot(HaveOccurred()) Expect(tl.String()).To(Equal(EthToWei(12000).String())) }) - It("Should emit a SetPersonal2FA event", func() { + It("should emit a SetPersonal2FA event", func() { it, err := WalletProxy.FilterSetPersonal2FA(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) @@ -279,7 +268,7 @@ var _ = Describe("2FA", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - When("the controller tries to confirm the addition to the whitelist", func() { + When("the controller tries to cancel the account addition to the whitelist", func() { It("should fail", func() { pwl, err := WalletProxy.PendingWhitelistAddition(nil) Expect(err).ToNot(HaveOccurred()) @@ -294,7 +283,7 @@ var _ = Describe("2FA", func() { }) }) - When("the random account (set now as 2FA) tries to confirm the addition to the whitelist", func() { + When("the random account (set now as 2FA) tries to cancel the account addition to the whitelist", func() { It("should succeed", func() { pwl, err := WalletProxy.PendingWhitelistAddition(nil) Expect(err).ToNot(HaveOccurred()) From 42ca863304b30cf697f2edd7b7bd6c73f7e9e5e3 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 6 Jan 2021 17:55:38 +0100 Subject: [PATCH 62/66] test: fix typos --- test/controller/remove_controller_test.go | 2 +- test/gas-proxy/execute_transaction_test.go | 6 +++--- test/holder/burn_decimal_test.go | 8 ++++---- .../parseIntScientific/parseIntScientific_test.go | 15 +++++++-------- test/licence/load_TKN_test.go | 4 ++-- test/licence/load_non-complaint_erc20_test.go | 4 ++-- test/licence/update_TKN_test.go | 2 +- test/licence/update_dao_test.go | 2 +- test/licence/update_float_test.go | 2 +- test/licence/update_holder_test.go | 2 +- test/oracle/update_token_rate_test.go | 12 ++++++------ test/upgradeable/fallback_test.go | 2 +- test/wallet-deployer/migrate_wallet_test.go | 2 +- ...execute_privileged_relayed_transaction_test.go | 2 +- test/wallet/execute_transaction_test.go | 2 +- test/wallet/load_ERC20_test.go | 4 ++-- test/wallet/load_non-complaint_ERC20_test.go | 2 +- test/wallet/metaTx_refund_test.go | 2 +- test/wallet/top_up_gas_test.go | 8 ++++---- 19 files changed, 41 insertions(+), 42 deletions(-) diff --git a/test/controller/remove_controller_test.go b/test/controller/remove_controller_test.go index c2a9a726..731bebf9 100644 --- a/test/controller/remove_controller_test.go +++ b/test/controller/remove_controller_test.go @@ -28,7 +28,7 @@ var _ = Describe("removeController", func() { Expect(count.String()).To(Equal("1")) }) - It("should NOT emit RemovdeController event", func() { + It("should NOT emit RemoveController event", func() { it, err := ControllerContract.FilterRemovedController(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeFalse()) diff --git a/test/gas-proxy/execute_transaction_test.go b/test/gas-proxy/execute_transaction_test.go index 88a298c5..a04c3e5e 100644 --- a/test/gas-proxy/execute_transaction_test.go +++ b/test/gas-proxy/execute_transaction_test.go @@ -29,7 +29,7 @@ var _ = Describe("ExecuteTransaction", func() { It("should be a successful transaction", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should use the expected amout of gas", func() { + It("should use the expected amount of gas", func() { receipt, err := Backend.TransactionReceipt(context.Background(), tx.Hash()) Expect(err).ToNot(HaveOccurred()) fmt.Fprintf(GinkgoWriter, "Gas used by no-op execute transaction: %d/%d\n", receipt.GasUsed, tx.Gas()) @@ -50,7 +50,7 @@ var _ = Describe("ExecuteTransaction", func() { It("should be a successful transaction", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should use the expected amout of gas", func() { + It("should use the expected amount of gas", func() { receipt, err := Backend.TransactionReceipt(context.Background(), tx.Hash()) Expect(err).ToNot(HaveOccurred()) fmt.Fprintf(GinkgoWriter, "Gas used by confirmOperation execute transaction: %d/%d\n", receipt.GasUsed, tx.Gas()) @@ -72,7 +72,7 @@ var _ = Describe("ExecuteTransaction", func() { It("should be a successful transaction", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should use the expected amout of gas", func() { + It("should use the expected amount of gas", func() { receipt, err := Backend.TransactionReceipt(context.Background(), tx.Hash()) Expect(err).ToNot(HaveOccurred()) fmt.Fprintf(GinkgoWriter, "Gas used by burnGas execute transaction: %d/%d\n", receipt.GasUsed, tx.Gas()) diff --git a/test/holder/burn_decimal_test.go b/test/holder/burn_decimal_test.go index fc0b778f..3fc5f71f 100644 --- a/test/holder/burn_decimal_test.go +++ b/test/holder/burn_decimal_test.go @@ -54,7 +54,7 @@ var _ = Describe("TokenHolder", func() { Expect(evt.Value.String()).To(Equal("583")) }) - When("187 TKN are transfered to a random address", func() { + When("187 TKN are transferred to a random address", func() { BeforeEach(func() { tx, err := TKNBurner.Transfer(BankAccount.TransactOpts(), RandomAccount.Address(), big.NewInt(187)) @@ -212,13 +212,13 @@ var _ = Describe("TokenHolder", func() { Expect(b.String()).To(Equal("98")) }) - It("should decrease the ERC20 type-1 balance of the holder contract by 60", func() { //token1 sypply: 396 - 60 = 336 + It("should decrease the ERC20 type-1 balance of the holder contract by 60", func() { //token1 supply: 396 - 60 = 336 b, err := ERC20Contract1.BalanceOf(nil, TokenHolderAddress) Expect(err).ToNot(HaveOccurred()) Expect(b.String()).To(Equal("336")) }) - It("should decrease the ERC20 type-2 balance of the holder contract by 100", func() { //token2 sypply: 765 - 116 = 649 + It("should decrease the ERC20 type-2 balance of the holder contract by 100", func() { //token2 supply: 765 - 116 = 649 b, err := ERC20Contract2.BalanceOf(nil, TokenHolderAddress) Expect(err).ToNot(HaveOccurred()) Expect(b.String()).To(Equal("649")) @@ -262,7 +262,7 @@ var _ = Describe("TokenHolder", func() { }) }) //When("The holder contract has two types of ERC20 tokens" - }) //When TKN are transfered to a random address + }) //When TKN are transferred to a random address }) }) diff --git a/test/internals/parseIntScientific/parseIntScientific_test.go b/test/internals/parseIntScientific/parseIntScientific_test.go index 89af7251..df110fda 100644 --- a/test/internals/parseIntScientific/parseIntScientific_test.go +++ b/test/internals/parseIntScientific/parseIntScientific_test.go @@ -303,7 +303,7 @@ var _ = Describe("ParseIntScientific", func() { It("Should return 999999999999999900000", func() { res, err := ParseIntScientificExporter.ParseIntScientificDecimals(nil, "999999999999999900000", big.NewInt(0)) Expect(err).ToNot(HaveOccurred()) - Expect(res.String()).To(Equal("999999999999999900000")) + Expect(res.String()).To(Equal("999999999999999900000")) }) }) @@ -323,7 +323,7 @@ var _ = Describe("ParseIntScientific", func() { }) }) - When("the integral part is 2^256-1 (max_uint256_value)", func() { + When("the integral part is 2^256-1 (max_uint256_value)", func() { It("Should succeed", func() { //input = 2^256, 0 <= uint <=2^256-1 res, err := ParseIntScientificExporter.ParseIntScientificDecimals(nil, "115792089237316195423570985008687907853269984665640564039457584007913129639935", big.NewInt(0)) @@ -420,7 +420,7 @@ var _ = Describe("ParseIntScientific", func() { }) }) - When("there is a '.' a negatiive exponent", func() { + When("there is a '.' a negative exponent", func() { It("Should revert", func() { _, err := ParseIntScientificExporter.ParseIntScientificDecimals(nil, "1e-3.", big.NewInt(0)) Expect(err).To(HaveOccurred()) @@ -594,7 +594,7 @@ var _ = Describe("ParseIntScientific", func() { }) }) - When("there is an '+' after a negatie exponent", func() { + When("there is an '+' after a negative exponent", func() { It("Should revert", func() { _, err := ParseIntScientificExporter.ParseIntScientificDecimals(nil, "1.0123e-3+", big.NewInt(2)) Expect(err).To(HaveOccurred()) @@ -607,7 +607,7 @@ var _ = Describe("ParseIntScientific", func() { It("Should revert", func() { _, err := ParseIntScientificExporter.ParseIntScientificDecimals(nil, "1.0123e", big.NewInt(2)) Expect(err).To(HaveOccurred()) - Expect(err.Error()).To(ContainSubstring("abi: attempting to unmarshall")) + Expect(err.Error()).To(ContainSubstring("abi: attempting to unmarshall")) }) }) @@ -673,7 +673,7 @@ var _ = Describe("ParseIntScientific", func() { }) }) - When("there is no integral part before a positive eponent", func() { + When("there is no integral part before a positive exponent", func() { It("Should revert", func() { _, err := ParseIntScientificExporter.ParseIntScientificDecimals(nil, "e+1", big.NewInt(0)) Expect(err).To(HaveOccurred()) @@ -681,7 +681,7 @@ var _ = Describe("ParseIntScientific", func() { }) }) - When("there is no integral part before a negative eponent", func() { + When("there is no integral part before a negative exponent", func() { It("Should revert", func() { _, err := ParseIntScientificExporter.ParseIntScientificDecimals(nil, "e-1", big.NewInt(0)) Expect(err).To(HaveOccurred()) @@ -713,7 +713,6 @@ var _ = Describe("ParseIntScientific", func() { }) }) - When("the integral part is 2^256 and an overflow occurs (max_uint256_value) = 2^256-1)", func() { It("Should revert", func() { //input 2^256, 0 <= uint <=2^256-1 diff --git a/test/licence/load_TKN_test.go b/test/licence/load_TKN_test.go index f86f758c..053dbaa8 100644 --- a/test/licence/load_TKN_test.go +++ b/test/licence/load_TKN_test.go @@ -81,7 +81,7 @@ var _ = Describe("load TKN", func() { Expect(evt.Value.String()).To(Equal("444")) }) - When("all the approved tokens are transfered ", func() { + When("all the approved tokens are transferred ", func() { BeforeEach(func() { tx, err := Licence.Load(RandomAccount.TransactOpts(), TKNBurnerAddress, big.NewInt(444)) @@ -141,7 +141,7 @@ var _ = Describe("load TKN", func() { }) //equal to approval - When("more tokens than approved are being transfered ", func() { + When("more tokens than approved are being transferred ", func() { It("Should revert", func() { tx, err := Licence.Load(RandomAccount.TransactOpts(ethertest.WithGasLimit(100000)), TKNBurnerAddress, big.NewInt(555)) diff --git a/test/licence/load_non-complaint_erc20_test.go b/test/licence/load_non-complaint_erc20_test.go index e273bd43..a13131b7 100644 --- a/test/licence/load_non-complaint_erc20_test.go +++ b/test/licence/load_non-complaint_erc20_test.go @@ -65,7 +65,7 @@ var _ = Describe("load ERC20", func() { Expect(evt.Value.String()).To(Equal("101")) }) - When("the exact approved amount is transfered ", func() { + When("the exact approved amount is transferred ", func() { BeforeEach(func() { tx, err := Licence.Load(RandomAccount.TransactOpts(), NonCompliantERC20Address, big.NewInt(101)) @@ -136,7 +136,7 @@ var _ = Describe("load ERC20", func() { }) //equal to approval - When("a bigger amount than the approved one is tried to be transfered ", func() { + When("a bigger amount than the approved one is tried to be transferred ", func() { It("Should revert", func() { tx, err := Licence.Load(RandomAccount.TransactOpts(ethertest.WithGasLimit(100000)), NonCompliantERC20Address, big.NewInt(102)) diff --git a/test/licence/update_TKN_test.go b/test/licence/update_TKN_test.go index f1edc356..ee5c2e69 100644 --- a/test/licence/update_TKN_test.go +++ b/test/licence/update_TKN_test.go @@ -115,7 +115,7 @@ var _ = Describe("updateTKN", func() { }) //called by the owner - Context("When not called by the Ower", func() { + Context("When not called by the Owner", func() { It("Should fail", func() { tx, err := Licence.UpdateTKNContractAddress(BankAccount.TransactOpts(ethertest.WithGasLimit(100000)), TKNBurnerAddress) Expect(err).ToNot(HaveOccurred()) diff --git a/test/licence/update_dao_test.go b/test/licence/update_dao_test.go index 4ee1100f..e2498867 100644 --- a/test/licence/update_dao_test.go +++ b/test/licence/update_dao_test.go @@ -111,7 +111,7 @@ var _ = Describe("updateDao", func() { }) //called by the owner - Context("When not called by the Ower", func() { + Context("When not called by the Owner", func() { It("Should fail", func() { tx, err := Licence.UpdateLicenceDAO(BankAccount.TransactOpts(ethertest.WithGasLimit(100000)), DAO.Address()) Expect(err).ToNot(HaveOccurred()) diff --git a/test/licence/update_float_test.go b/test/licence/update_float_test.go index aebfb72e..d755d7c5 100644 --- a/test/licence/update_float_test.go +++ b/test/licence/update_float_test.go @@ -110,7 +110,7 @@ var _ = Describe("updateFloat", func() { }) //called by the owner - Context("When not called by the Ower", func() { + Context("When not called by the Owner", func() { It("Should fail", func() { tx, err := Licence.UpdateHolder(BankAccount.TransactOpts(ethertest.WithGasLimit(100000)), CryptoFloatAddress) Expect(err).ToNot(HaveOccurred()) diff --git a/test/licence/update_holder_test.go b/test/licence/update_holder_test.go index 1f015507..881d59a5 100644 --- a/test/licence/update_holder_test.go +++ b/test/licence/update_holder_test.go @@ -111,7 +111,7 @@ var _ = Describe("updateHolder", func() { }) //called by the owner - Context("When not called by the Ower", func() { + Context("When not called by the Owner", func() { It("Should fail", func() { tx, err := Licence.UpdateHolder(BankAccount.TransactOpts(ethertest.WithGasLimit(100000)), CryptoFloatAddress) Expect(err).ToNot(HaveOccurred()) diff --git a/test/oracle/update_token_rate_test.go b/test/oracle/update_token_rate_test.go index 1a2d4f6b..c23e0cd7 100644 --- a/test/oracle/update_token_rate_test.go +++ b/test/oracle/update_token_rate_test.go @@ -124,10 +124,10 @@ var _ = Describe("UpdateTokenRate", func() { }) }) - Context("When the result is is misformated", func() { + Context("When the result is is misformatted", func() { BeforeEach(func() { - //update the public key, needed because we sign our own (misformated) results for the proof in the rate update + //update the public key, needed because we sign our own (misformatted) results for the proof in the rate update tx, err := Oracle.UpdateCryptoCompareAPIPublicKey(ControllerAdmin.TransactOpts(), common.Hex2Bytes("717580b4c7577ebe0a7c3c21213ffbfa1221d2c1fe455d4897800d86eb65d91f8fb6c2304a54d89ab5c13a690f03dce25f7d46af90f79908d6be8bcdcdf74c22")) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -175,10 +175,10 @@ var _ = Describe("UpdateTokenRate", func() { }) }) - Context("When the date is is misformated", func() { + Context("When the date is is misformatted", func() { BeforeEach(func() { - //update the public key, needed because we sign our own (misformated) results for the proof + //update the public key, needed because we sign our own (misformatted) results for the proof tx, err := Oracle.UpdateCryptoCompareAPIPublicKey(ControllerAdmin.TransactOpts(), common.Hex2Bytes("717580b4c7577ebe0a7c3c21213ffbfa1221d2c1fe455d4897800d86eb65d91f8fb6c2304a54d89ab5c13a690f03dce25f7d46af90f79908d6be8bcdcdf74c22")) Expect(err).ToNot(HaveOccurred()) Backend.Commit() @@ -256,7 +256,7 @@ var _ = Describe("UpdateTokenRate", func() { }) It("It should Fail", func() { - //wrong delimiters, - instead of ' ', interpretes the whole string as the day + //wrong delimiters, - instead of ' ', interprets the whole string as the day proof := common.Hex2Bytes("0041f1bcafadb5a8cb52218f0dade45bade9024a2cef4d5aae363e57e41ef765c5b86980d0fb5ff62fec6b529352b92025fbb595f29b9441759b8932483d9f7b40061c0060646174653a204672692c2031362d4e6f762d323031382d31363a32323a363020474d540a6469676573743a205348412d3235363d4459452b675a6c4147756c5630562f67774a4347452f78423171484b66516c42476a37586c3441496649383d") tx, err := Oracle.UpdateTokenRate(RandomAccount.TransactOpts(ethertest.WithGasLimit(300000)), common.HexToAddress("0xfe209bdE5CA32fa20E6728A005F26D651FFF5982"), "{\"ETH\":0.003637}", proof) Expect(err).ToNot(HaveOccurred()) @@ -350,7 +350,7 @@ var _ = Describe("UpdateTokenRate", func() { It("Should fail", func() { //date has been tampered with (year 2019 instead of 2018) //result has changed (bytes[-3]-bytes[-2]) - //the signature verfication should fail, code does not reach the hash verification + //the signature verification should fail, code does not reach the hash verification proof := common.Hex2Bytes("0041ed930d0cf64c73b82c3a04b958f2d27572c09ef7faacb14f062b2ce63eb78331a885fda74e113383ead579337b7e02cc414a214c3bd210142628087dcf5ded781c0060646174653a205765642c203033204f637420323031392031373a30303a323220474d540a6469676573743a205348412d3235363d36514d48744c664e677576362b63795a6133376d68513962776f394449482f6451672f54715a34467454393d") tx, err := Oracle.UpdateTokenRate(RandomAccount.TransactOpts(ethertest.WithGasLimit(200000)), common.HexToAddress("0xfe209bdE5CA32fa20E6728A005F26D651FFF5982"), "{\"ETH\":0.001702}", proof) Expect(err).ToNot(HaveOccurred()) diff --git a/test/upgradeable/fallback_test.go b/test/upgradeable/fallback_test.go index 279be464..687d9965 100644 --- a/test/upgradeable/fallback_test.go +++ b/test/upgradeable/fallback_test.go @@ -46,7 +46,7 @@ var _ = Describe("fallback", func() { }) }) - When("using tranfser()", func() { + When("using transfer()", func() { BeforeEach(func() { // transfer 1 wei to proxy tx, err = Wallet.Transfer(Owner.TransactOpts(), ProxyAddress, big.NewInt(1)) diff --git a/test/wallet-deployer/migrate_wallet_test.go b/test/wallet-deployer/migrate_wallet_test.go index 8c1a05d1..4e7d29cb 100644 --- a/test/wallet-deployer/migrate_wallet_test.go +++ b/test/wallet-deployer/migrate_wallet_test.go @@ -194,7 +194,7 @@ var _ = Describe("Migrate Wallet", func() { }) }) - }) //no wallets chached + }) //no wallets cached When("the wrong owner is passed in", func() { It("should fail", func() { diff --git a/test/wallet/execute_privileged_relayed_transaction_test.go b/test/wallet/execute_privileged_relayed_transaction_test.go index 2e0a45b0..0de12a12 100644 --- a/test/wallet/execute_privileged_relayed_transaction_test.go +++ b/test/wallet/execute_privileged_relayed_transaction_test.go @@ -68,7 +68,7 @@ var _ = Describe("executePrivilegedRelayedTransaction", func() { }) }) - When("2FA tries to relay two owner-signed transactions: send value(no data) + transfer() with a value above the daily limiy", func() { + When("2FA tries to relay two owner-signed transactions: send value(no data) + transfer() with a value above the daily limit", func() { BeforeEach(func() { // Add ERC20 token to tokenWhitelist and update token rate to be equal to 1 (1 token = 1 ETH) diff --git a/test/wallet/execute_transaction_test.go b/test/wallet/execute_transaction_test.go index bb531e75..df7a2fee 100644 --- a/test/wallet/execute_transaction_test.go +++ b/test/wallet/execute_transaction_test.go @@ -646,7 +646,7 @@ var _ = Describe("executeTransaction", func() { }) }) - When("the approved random wallet tries to 'transferFrom' more than the approved ammount to itself using 'executeTransaction'", func() { + When("the approved random wallet tries to 'transferFrom' more than the approved amount to itself using 'executeTransaction'", func() { It("should fail", func() { a, err := abi.JSON(strings.NewReader(ERC20ABI)) Expect(err).ToNot(HaveOccurred()) diff --git a/test/wallet/load_ERC20_test.go b/test/wallet/load_ERC20_test.go index a1aa7969..445f0796 100644 --- a/test/wallet/load_ERC20_test.go +++ b/test/wallet/load_ERC20_test.go @@ -101,7 +101,7 @@ var _ = Describe("wallet load ERC20", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - When("a valid amount is transfered ", func() { + When("a valid amount is transferred ", func() { BeforeEach(func() { tx, err := WalletProxy.LoadTokenCard(Owner.TransactOpts(), ERC20Contract1Address, big.NewInt(101)) @@ -267,7 +267,7 @@ var _ = Describe("wallet load ERC20", func() { }) //equal to approval - When("a bigger amount than the one owned is tried to be transfered ", func() { + When("a bigger amount than the one owned is tried to be transferred ", func() { It("Should revert", func() { tx, err := WalletProxy.LoadTokenCard(Owner.TransactOpts(ethertest.WithGasLimit(300000)), ERC20Contract1Address, big.NewInt(1001)) diff --git a/test/wallet/load_non-complaint_ERC20_test.go b/test/wallet/load_non-complaint_ERC20_test.go index 5a34b338..73083e0c 100644 --- a/test/wallet/load_non-complaint_ERC20_test.go +++ b/test/wallet/load_non-complaint_ERC20_test.go @@ -74,7 +74,7 @@ var _ = Describe("wallet load non-compliant ERC20", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - When("a valid amount is transfered ", func() { + When("a valid amount is transferred ", func() { BeforeEach(func() { tx, err := WalletProxy.LoadTokenCard(Owner.TransactOpts(), NonCompliantERC20Address, EthToWei(101)) diff --git a/test/wallet/metaTx_refund_test.go b/test/wallet/metaTx_refund_test.go index 8a016f14..0d00a62a 100644 --- a/test/wallet/metaTx_refund_test.go +++ b/test/wallet/metaTx_refund_test.go @@ -29,7 +29,7 @@ var _ = Describe("metaTx refund", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - When("ownership is transfered to a newly generated address", func() { + When("ownership is transferred to a newly generated address", func() { var randomAddress common.Address var tokenBank common.Address diff --git a/test/wallet/top_up_gas_test.go b/test/wallet/top_up_gas_test.go index a904bf1d..484fe057 100644 --- a/test/wallet/top_up_gas_test.go +++ b/test/wallet/top_up_gas_test.go @@ -50,7 +50,7 @@ var _ = Describe("topUpGas", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("should top up the gas succesfully", func() { + It("should top up the gas successfully", func() { b, e := Backend.BalanceAt(context.Background(), WalletProxyAddress, nil) Expect(e).ToNot(HaveOccurred()) newBalance := new(big.Int).Sub(EthToWei(10), FinneyToWei(1)) @@ -86,7 +86,7 @@ var _ = Describe("topUpGas", func() { }) - Context("When daily limit has been exausted", func() { + Context("When daily limit has been exhausted", func() { BeforeEach(func() { caller = Controller BankAccount.MustTransfer(Backend, Controller.Address(), EthToWei(1)) @@ -163,7 +163,7 @@ var _ = Describe("topUpGas", func() { txCost = new(big.Int).Mul(tx.GasPrice(), big.NewInt(int64(r.GasUsed))) }) - It("should top up succesfully", func() { + It("should top up successfully", func() { b, e := Backend.BalanceAt(context.Background(), WalletProxyAddress, nil) Expect(e).ToNot(HaveOccurred()) newBalance := new(big.Int).Sub(EthToWei(10), FinneyToWei(500)) //Wallet address has initially 10 ETH @@ -197,7 +197,7 @@ var _ = Describe("topUpGas", func() { }) - Context("When daily limit has been exausted", func() { + Context("When daily limit has been exhausted", func() { BeforeEach(func() { tx, err = WalletProxy.TopUpGas(caller.TransactOpts(ethertest.WithGasLimit(81000)), FinneyToWei(500)) From 5648ee9c2e2bd81b45b241513cb3537ef3b39096 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 6 Jan 2021 17:59:11 +0100 Subject: [PATCH 63/66] contracts: remove duplicate modifer onlyController --- contracts/controller.sol | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/contracts/controller.sol b/contracts/controller.sol index 82ce6bf6..390f46f3 100644 --- a/contracts/controller.sol +++ b/contracts/controller.sol @@ -60,13 +60,7 @@ contract Controller is IController, Ownable, Transferrable { require(_isAdmin[msg.sender], "sender is not admin"); _; } - - /// @notice Checks if message sender is a controller. - modifier onlyController() { - require(_isController[msg.sender], "sender is not controller"); - _; - } - + /// @notice Check if Owner or Admin modifier onlyAdminOrOwner() { require(_isOwner(msg.sender) || _isAdmin[msg.sender], "sender is not admin or owner"); From 25a8af1f24c4bce880f2403e31dc2e3b1910cecd Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 6 Jan 2021 18:21:21 +0100 Subject: [PATCH 64/66] contracts: correct typos --- contracts/controller.sol | 2 +- contracts/internals/date.sol | 2 +- contracts/internals/ensResolvable.sol | 2 +- contracts/internals/gasRefundable.sol | 2 +- contracts/internals/ownable.sol | 2 +- contracts/licence.sol | 4 ++-- contracts/oracle.sol | 2 +- contracts/tokenWhitelist.sol | 6 +++--- contracts/wallet.sol | 16 ++++++++-------- contracts/walletCache.sol | 2 +- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/contracts/controller.sol b/contracts/controller.sol index 390f46f3..7c9322e7 100644 --- a/contracts/controller.sol +++ b/contracts/controller.sol @@ -60,7 +60,7 @@ contract Controller is IController, Ownable, Transferrable { require(_isAdmin[msg.sender], "sender is not admin"); _; } - + /// @notice Check if Owner or Admin modifier onlyAdminOrOwner() { require(_isOwner(msg.sender) || _isAdmin[msg.sender], "sender is not admin or owner"); diff --git a/contracts/internals/date.sol b/contracts/internals/date.sol index dcfc0b44..d9e160e1 100644 --- a/contracts/internals/date.sol +++ b/contracts/internals/date.sol @@ -20,7 +20,7 @@ pragma solidity ^0.6.11; -/// @title Date provides redimentary date parsing functionality. +/// @title Date provides rudimentary date parsing functionality. /// @notice This method parses months found in an ISO date to a number contract Date { bytes32 private constant _JANUARY = keccak256("Jan"); diff --git a/contracts/internals/ensResolvable.sol b/contracts/internals/ensResolvable.sol index 8bfca90d..f8c35fc1 100644 --- a/contracts/internals/ensResolvable.sol +++ b/contracts/internals/ensResolvable.sol @@ -30,7 +30,7 @@ contract ENSResolvable is Initializable { /// @dev Address of the ENS registry contract set to the default ENS registry address. address private _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e); - /// @notice Checks if the contract has been initialized succesfully i.e. the ENS registry has been set. + /// @notice Checks if the contract has been initialized successfully i.e. the ENS registry has been set. modifier initialized() { require(_ensRegistry != address(0), "ENSResolvable not initialized"); _; diff --git a/contracts/internals/gasRefundable.sol b/contracts/internals/gasRefundable.sol index a1f9954d..3b43b3ae 100644 --- a/contracts/internals/gasRefundable.sol +++ b/contracts/internals/gasRefundable.sol @@ -33,7 +33,7 @@ contract GasRefundable { /// @dev Address of the gas token used to refund gas (default: CHI). IGasToken private _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c); - /// @dev Gas token parameters parameters used in the gas refund calcualtion (default: CHI). + /// @dev Gas token parameters parameters used in the gas refund calculation (default: CHI). GasTokenParameters private _gasTokenParameters = GasTokenParameters({freeCallGasCost: 14154, gasRefundPerUnit: 41130}); /// @notice Refunds gas based on the amount of gas spent in the transaction and the gas token parameters. diff --git a/contracts/internals/ownable.sol b/contracts/internals/ownable.sol index b87fd70b..1746bb23 100644 --- a/contracts/internals/ownable.sol +++ b/contracts/internals/ownable.sol @@ -23,7 +23,7 @@ pragma solidity ^0.6.11; import "../externals/initializable.sol"; /// @title Ownable has an owner address and provides basic authorization control functions. -/// This contract is modified version of the MIT OpenZepplin Ownable contract +/// This contract is modified version of the MIT OpenZeppelin Ownable contract /// This contract allows for the transferOwnership operation to be made impossible /// https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol contract Ownable is Initializable { diff --git a/contracts/licence.sol b/contracts/licence.sol index 3c6a25a9..06123f6d 100644 --- a/contracts/licence.sol +++ b/contracts/licence.sol @@ -26,7 +26,7 @@ import "./internals/controllable.sol"; import "./internals/ensResolvable.sol"; import "./internals/transferrable.sol"; -/// @title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract. +/// @title Licence loads the TokenCard and transfers the licence amount to the TKN Holder Contract. /// @dev the rest of the amount gets sent to the CryptoFloat contract Licence is Transferrable, ENSResolvable, Controllable { using SafeMath for uint256; @@ -155,7 +155,7 @@ contract Licence is Transferrable, ENSResolvable, Controllable { _lockedTKNContractAddress = true; } - /// @dev Updates the address of the cyptoFloat. + /// @dev Updates the address of the cryptoFloat. /// @param _newFloat This is the new address for the CryptoFloat function updateFloat(address payable _newFloat) external onlyAdmin { require(!floatLocked(), "float is locked"); diff --git a/contracts/oracle.sol b/contracts/oracle.sol index efa6b4cc..93296349 100644 --- a/contracts/oracle.sol +++ b/contracts/oracle.sol @@ -83,7 +83,7 @@ contract Oracle is ENSResolvable, Base64, Date, Controllable, ParseIntScientific emit SetCryptoComparePublicKey(msg.sender, _publicKey); } - /// @dev Verifiy the provided origin proof and update token's rate. + /// @dev Verify the provided origin proof and update token's rate. /// @param _token the address of the token to be updated. /// @param _result query result in JSON format. /// @param _proof origin proof from CryptoCompare. diff --git a/contracts/tokenWhitelist.sol b/contracts/tokenWhitelist.sol index 30608bc1..94abe765 100644 --- a/contracts/tokenWhitelist.sol +++ b/contracts/tokenWhitelist.sol @@ -65,7 +65,7 @@ contract TokenWhitelist is ENSResolvable, Controllable, Transferrable { mapping(address => Token) private _tokenInfoMap; - // @notice specifies whitelisted methodIds for protected tokens in wallet's excuteTranaction() e.g. keccak256(transfer(address,uint256)) => 0xa9059cbb + // @notice specifies whitelisted methodIds for protected tokens in wallet's executeTransaction() e.g. keccak256(transfer(address,uint256)) => 0xa9059cbb mapping(bytes4 => bool) private _methodIdWhitelist; address[] private _tokenAddressArray; @@ -83,7 +83,7 @@ contract TokenWhitelist is ENSResolvable, Controllable, Transferrable { /// @param _ens_ is the ENS registry address. /// @param _oracleNode_ is the ENS node of the Oracle. /// @param _controllerNode_ is our Controllers node. - /// @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit. + /// @param _stablecoinAddress_ is the address of the stablecoin used by the wallet for the card load limit. constructor( address _ens_, bytes32 _oracleNode_, @@ -207,7 +207,7 @@ contract TokenWhitelist is ENSResolvable, Controllable, Transferrable { } else { //transfer or approve // 4 (signature) + 32(address) + 32(uint) - require(_data.length >= 4 + 32 + 32, "not enough data for transfer/appprove"); + require(_data.length >= 4 + 32 + 32, "not enough data for transfer/approve"); return (_data._bytesToAddress(4 + 12), _data._bytesToUint256(4 + 32)); } } diff --git a/contracts/wallet.sol b/contracts/wallet.sol index dab3cc54..98ff3849 100644 --- a/contracts/wallet.sol +++ b/contracts/wallet.sol @@ -86,7 +86,7 @@ contract OptOutableMonolith2FA is Controllable, Ownable { emit SetPersonal2FA(msg.sender, _p2FA); } - /// @dev utiliy function to check whether or not an address is valid 2FA'er + /// @dev utility function to check whether or not an address is valid 2FA'er function _is2FA(address _sender) private view returns (bool) { if (monolith2FA) { return _isController(_sender); @@ -146,7 +146,7 @@ contract AddressWhitelist is OptOutableMonolith2FA, SelfCallableOwnable { /// @dev Check that neither addition nor removal operations have already been submitted. modifier noActiveSubmission() { - require(!submittedWhitelistAddition && !submittedWhitelistRemoval, "whitelist sumbission pending"); + require(!submittedWhitelistAddition && !submittedWhitelistRemoval, "whitelist submission pending"); _; } @@ -180,7 +180,7 @@ contract AddressWhitelist is OptOutableMonolith2FA, SelfCallableOwnable { /// @dev Confirm pending whitelist addition. /// @dev This will only ever be applied post 2FA, by one of the Controllers - /// @param _hash is the hash of the pending whitelist array, a form of lamport lock + /// @param _hash is the hash of the pending whitelist array, a form of Lamport's lock function confirmWhitelistAddition(bytes32 _hash) external only2FA { // Require that the whitelist addition has been submitted. require(submittedWhitelistAddition, "no pending submission"); @@ -603,17 +603,17 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe uint256 pos = 32; //the first 32 bytes denote the byte array length, start from actual data address destination; // destination address - uint256 value; // trasanction value - uint256 dataLength; // externall call data length + uint256 value; // transaction value + uint256 dataLength; // external call data length bytes memory data; // call data while (pos < batchLength) { - // there should always be at least 84 bytes remaining: the minimun #bytes required to encode a Tx + // there should always be at least 84 bytes remaining: the minimum #bytes required to encode a Tx remainingBytesLength = remainingBytesLength.sub(84); assembly { // shift right by 96 bits (256 - 160) to get the destination address (and zero the excessive bytes) destination := shr(96, mload(add(_transactionBatch, pos))) - // get value: pos + 20 bytes (destinnation address) + // get value: pos + 20 bytes (destination address) value := mload(add(_transactionBatch, add(pos, 20))) // get data: pos + 20 (destination address) + 32 (value) bytes // the first 32 bytes denote the byte array length @@ -661,7 +661,7 @@ contract Wallet is ENSResolvable, AddressWhitelist, DailyLimit, IERC165, Transfe amountToSend = _amount.mul(rate).div(magnitude); } // _amountToSend now is in ether - // Get the stablecoin's magnitude and its current rate. + // Get the stablecoin magnitude and its current rate. (, uint256 stablecoinMagnitude, uint256 stablecoinRate, bool stablecoinAvailable, , , ) = _getStablecoinInfo(); // Check if the stablecoin rate is set. require(stablecoinAvailable, "token not available"); diff --git a/contracts/walletCache.sol b/contracts/walletCache.sol index 1e12c76e..0da43cf1 100644 --- a/contracts/walletCache.sol +++ b/contracts/walletCache.sol @@ -25,7 +25,7 @@ import "./interfaces/IWallet.sol"; import "./internals/controllable.sol"; import "./internals/ensResolvable.sol"; -/// @title IWalletCache interface describes a method for poping an already cached wallet +/// @title IWalletCache interface describes a method for popping an already cached wallet interface IWalletCache { function walletCachePop() external returns (address payable); } From 3e1fa84e072543cae760f115895ab52029146d04 Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Wed, 6 Jan 2021 18:28:28 +0100 Subject: [PATCH 65/66] pkg: update bindings --- pkg/bindings/controller.go | 2 +- pkg/bindings/gasProxy.go | 2 +- pkg/bindings/holder.go | 2 +- pkg/bindings/licence.go | 2 +- pkg/bindings/mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/mocks/tokenWhitelistableExporter.go | 2 +- pkg/bindings/mocks/wallet.go | 2 +- pkg/bindings/oracle.go | 2 +- pkg/bindings/tokenWhitelist.go | 2 +- pkg/bindings/wallet.go | 2 +- pkg/bindings/walletCache.go | 2 +- pkg/bindings/walletDeployer.go | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pkg/bindings/controller.go b/pkg/bindings/controller.go index dd707155..f2d31850 100644 --- a/pkg/bindings/controller.go +++ b/pkg/bindings/controller.go @@ -31,7 +31,7 @@ var ( const ControllerABI = "[{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_ownerAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"AddedAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"name\":\"AddedController\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"RemovedAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"name\":\"RemovedController\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"Started\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"Stopped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isStopped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"removeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"start\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stop\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // ControllerBin is the compiled bytecode used for deploying new contracts. -var ControllerBin = "0x60806040523480156200001157600080fd5b506040516200178f3803806200178f833981810160405260208110156200003757600080fd5b5051620000468160006200004d565b50620001bc565b600054610100900460ff168062000069575062000069620001b6565b8062000078575060005460ff16155b620000b55760405162461bcd60e51b815260040180806020018281038252602e81526020018062001761602e913960400191505060405180910390fd5b600054610100900460ff16158015620000e1576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff9104166200015a57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015620001b1576000805461ff00191690555b505050565b303b1590565b61159580620001cc6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103e9565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f9565b61011761046c565b610157610472565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047b565b61010d610526565b6101d7610621565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610630565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b0316610736565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610805565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bc565b61010d610a2f565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610abe565b6102da33610b3b565b806102f457503360009081526034602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6038805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60375490565b61039633610b3b565b6103dd576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6103e681610b4f565b50565b603354600160a01b900460ff1690565b6000610403610472565b1561044d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526034602052604090205460ff1690565b60355490565b60385460ff1690565b61048433610b3b565b6104cb576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6104d3610472565b1561051d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610c25565b61052f33610b3b565b610576576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166105d4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603380546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b3360009081526034602052604090205460ff1661068a576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b610692610472565b156106dc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106e7838383610dcd565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61073f33610b3b565b8061075957503360009081526034602052604090205460ff165b6107aa576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107b2610472565b156107fc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610e0c565b61080e33610b3b565b610855576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166108b3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f85760405162461bcd60e51b81526004018080602001828103825260238152602001806114c76023913960400191505060405180910390fd5b6033805460ff60a01b1916600160a01b831515021790558061095157604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603354604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603380546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c6610472565b15610a10576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526036602052604090205460ff1690565b610a3833610b3b565b610a7f576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6038805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ac733610b3b565b80610ae157503360009081526034602052604090205460ff165b610b32576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e681610fb4565b6033546001600160a01b0390811691161490565b6001600160a01b03811660009081526034602052604090205460ff16610bbc576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260346020908152604091829020805460ff191690556035805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526034602052604090205460ff1615610c7d5760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610cd55760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610cde81610b3b565b15610d1a5760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610d5f5760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260346020908152604091829020805460ff1916600190811790915560358054909101905581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610df357610dee6001600160a01b03841682611074565b610e07565b610e076001600160a01b0383168483611159565b505050565b6001600160a01b03811660009081526034602052604090205460ff1615610e645760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610ebc5760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610ec581610b3b565b15610f015760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610f465760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff1916600190811790915560378054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526036602052604090205460ff1661100b5760405162461bcd60e51b81526004018080602001828103825260248152602001806114a36024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff191690556037805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b804710156110c9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611114576040519150601f19603f3d011682016040523d82523d6000602084013e611119565b606091505b5050905080610e075760405162461bcd60e51b815260040180806020018281038252603a815260200180611469603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e0790849060606111fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112579092919063ffffffff16565b805190915015610e075780806020019051602081101561121a57600080fd5b5051610e075760405162461bcd60e51b815260040180806020018281038252602a81526020018061150e602a913960400191505060405180910390fd5b6060611266848460008561126e565b949350505050565b606061127985611419565b6112ca576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106113095780518252601f1990920191602091820191016112ea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461136b576040519150601f19603f3d011682016040523d82523d6000602084013e611370565b606091505b509150915081156113845791506112669050565b8051156113945780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113de5781810151838201526020016113c6565b50505050905090810190601f16801561140b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656470726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a2646970667358221220693dc9c589f95652d34f6e53547734d97b459fdeb235191cb376d3f7e39760d764736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var ControllerBin = "0x60806040523480156200001157600080fd5b506040516200178f3803806200178f833981810160405260208110156200003757600080fd5b5051620000468160006200004d565b50620001bc565b600054610100900460ff168062000069575062000069620001b6565b8062000078575060005460ff16155b620000b55760405162461bcd60e51b815260040180806020018281038252602e81526020018062001761602e913960400191505060405180910390fd5b600054610100900460ff16158015620000e1576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff9104166200015a57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015620001b1576000805461ff00191690555b505050565b303b1590565b61159580620001cc6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103e9565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f9565b61011761046c565b610157610472565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047b565b61010d610526565b6101d7610621565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610630565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b0316610736565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610805565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bc565b61010d610a2f565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610abe565b6102da33610b3b565b806102f457503360009081526034602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6038805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60375490565b61039633610b3b565b6103dd576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6103e681610b4f565b50565b603354600160a01b900460ff1690565b6000610403610472565b1561044d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526034602052604090205460ff1690565b60355490565b60385460ff1690565b61048433610b3b565b6104cb576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6104d3610472565b1561051d576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610c25565b61052f33610b3b565b610576576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166105d4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603380546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b3360009081526034602052604090205460ff1661068a576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b610692610472565b156106dc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106e7838383610dcd565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61073f33610b3b565b8061075957503360009081526034602052604090205460ff165b6107aa576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107b2610472565b156107fc576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e681610e0c565b61080e33610b3b565b610855576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603354600160a01b900460ff166108b3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f85760405162461bcd60e51b81526004018080602001828103825260238152602001806114c76023913960400191505060405180910390fd5b6033805460ff60a01b1916600160a01b831515021790558061095157604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603354604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603380546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c6610472565b15610a10576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526036602052604090205460ff1690565b610a3833610b3b565b610a7f576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6038805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ac733610b3b565b80610ae157503360009081526034602052604090205460ff165b610b32576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e681610fb4565b6033546001600160a01b0390811691161490565b6001600160a01b03811660009081526034602052604090205460ff16610bbc576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260346020908152604091829020805460ff191690556035805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526034602052604090205460ff1615610c7d5760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610cd55760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610cde81610b3b565b15610d1a5760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610d5f5760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260346020908152604091829020805460ff1916600190811790915560358054909101905581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610df357610dee6001600160a01b03841682611074565b610e07565b610e076001600160a01b0383168483611159565b505050565b6001600160a01b03811660009081526034602052604090205460ff1615610e645760405162461bcd60e51b81526004018080602001828103825260248152602001806114456024913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604090205460ff1615610ebc5760405162461bcd60e51b81526004018080602001828103825260288152602001806115386028913960400191505060405180910390fd5b610ec581610b3b565b15610f015760405162461bcd60e51b81526004018080602001828103825260258152602001806114206025913960400191505060405180910390fd5b6001600160a01b038116610f465760405162461bcd60e51b81526004018080602001828103825260248152602001806114ea6024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff1916600190811790915560378054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526036602052604090205460ff1661100b5760405162461bcd60e51b81526004018080602001828103825260248152602001806114a36024913960400191505060405180910390fd5b6001600160a01b038116600081815260366020908152604091829020805460ff191690556037805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b804710156110c9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611114576040519150601f19603f3d011682016040523d82523d6000602084013e611119565b606091505b5050905080610e075760405162461bcd60e51b815260040180806020018281038252603a815260200180611469603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e0790849060606111fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112579092919063ffffffff16565b805190915015610e075780806020019051602081101561121a57600080fd5b5051610e075760405162461bcd60e51b815260040180806020018281038252602a81526020018061150e602a913960400191505060405180910390fd5b6060611266848460008561126e565b949350505050565b606061127985611419565b6112ca576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106113095780518252601f1990920191602091820191016112ea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461136b576040519150601f19603f3d011682016040523d82523d6000602084013e611370565b606091505b509150915081156113845791506112669050565b8051156113945780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113de5781810151838201526020016113c6565b50505050905090810190601f16801561140b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656470726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a26469706673582212200ee2fcb97d85286a2d9e872abae501db5a54a5133afa89ac005a79f12ba6e66464736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployController deploys a new Ethereum contract, binding an instance of Controller to it. func DeployController(auth *bind.TransactOpts, backend bind.ContractBackend, _ownerAddress_ common.Address) (common.Address, *types.Transaction, *Controller, error) { diff --git a/pkg/bindings/gasProxy.go b/pkg/bindings/gasProxy.go index 6081a3a9..6a5fb23b 100644 --- a/pkg/bindings/gasProxy.go +++ b/pkg/bindings/gasProxy.go @@ -37,7 +37,7 @@ type GasRefundableGasTokenParameters struct { const GasProxyABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"freeCallGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasRefundPerUnit\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structGasRefundable.GasTokenParameters\",\"name\":\"_gasTokenParameters\",\"type\":\"tuple\"}],\"name\":\"SetGasToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenParameters\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"freeCallGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasRefundPerUnit\",\"type\":\"uint256\"}],\"internalType\":\"structGasRefundable.GasTokenParameters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"freeCallGasCost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasRefundPerUnit\",\"type\":\"uint256\"}],\"internalType\":\"structGasRefundable.GasTokenParameters\",\"name\":\"_parameters\",\"type\":\"tuple\"}],\"name\":\"setGasToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // GasProxyBin is the compiled bytecode used for deploying new contracts. -var GasProxyBin = "0x603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697603455603580549091166d4946c0e9f43f4dee607b0ef1fa1c17905560c060405261374a608081905261a0aa60a08190526036919091556037553480156200008b57600080fd5b5060405162000d4338038062000d43833981016040819052620000ae916200022c565b620000b982620000cc565b620000c4816200018e565b5050620002b4565b600054610100900460ff1680620000e85750620000e862000226565b80620000f7575060005460ff16155b6200011f5760405162461bcd60e51b8152600401620001169062000266565b60405180910390fd5b600054610100900460ff161580156200014b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200017757603380546001600160a01b0319166001600160a01b0384161790555b80156200018a576000805461ff00191690555b5050565b600054610100900460ff1680620001aa5750620001aa62000226565b80620001b9575060005460ff16155b620001d85760405162461bcd60e51b8152600401620001169062000266565b600054610100900460ff1615801562000204576000805460ff1961ff0019909116610100171660011790555b81156200017757603482905580156200018a576000805461ff00191690555050565b303b1590565b600080604083850312156200023f578182fd5b82516001600160a01b038116811462000256578283fd5b6020939093015192949293505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b610a7f80620002c46000396000f3fe6080604052600436106100555760003560e01c80633686ba421461005a5780633f579f4214610085578063719d5c6f146100a55780637d73b231146100c7578063c91d59fe146100e9578063e2b4ce97146100fe575b600080fd5b34801561006657600080fd5b5061006f610120565b60405161007c9190610a23565b60405180910390f35b610098610093366004610698565b610143565b60405161007c91906108a2565b3480156100b157600080fd5b506100c56100c0366004610659565b610300565b005b3480156100d357600080fd5b506100dc610341565b60405161007c9190610808565b3480156100f557600080fd5b506100dc610350565b34801561010a57600080fd5b5061011361035f565b60405161007c9190610899565b61012861061c565b50604080518082019091526036548152603754602082015290565b606061014e33610365565b6101735760405162461bcd60e51b815260040161016a906109ec565b60405180910390fd5b60005a905060006060876001600160a01b03168787876040516101979291906107f8565b60006040518083038185875af1925050503d80600081146101d4576040519150601f19603f3d011682016040523d82523d6000602084013e6101d9565b606091505b5091509150816101fb5760405162461bcd60e51b815260040161016a906109be565b7ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138888888885604051610232959493929190610839565b60405180910390a19250506000601036025a836152080103019050603560009054906101000a90046001600160a01b03166001600160a01b0316636366b93660366001015460366000015484018161028657fe5b046040518263ffffffff1660e01b81526004016102a39190610899565b602060405180830381600087803b1580156102bd57600080fd5b505af11580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610786565b505050949350505050565b610309336103f3565b6103255760405162461bcd60e51b815260040161016a90610923565b61033d826103383684900384018461073c565b61042b565b5050565b6033546001600160a01b031690565b6035546001600160a01b031690565b60345490565b60006103726034546104f6565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040161039d9190610808565b60206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed919061071c565b92915050565b60006104006034546104f6565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040161039d9190610808565b6001600160a01b0382166104515760405162461bcd60e51b815260040161016a90610950565b805161046f5760405162461bcd60e51b815260040161016a90610987565b60208101516104905760405162461bcd60e51b815260040161016a906108ec565b603580546001600160a01b0319166001600160a01b038416179055805160365560208101516037556040517fd82ec20581833e6b763037b2f1082d6b9c2ba3e8dbaaf4aab4c2b4c49d99fbb5906104ea908490849061081c565b60405180910390a15050565b6033546000906001600160a01b03166105215760405162461bcd60e51b815260040161016a906108b5565b603354604051630178b8bf60e01b81526001600160a01b0390911690630178b8bf90610551908590600401610899565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190610636565b6001600160a01b0316633b3b57de836040518263ffffffff1660e01b81526004016105cc9190610899565b60206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610636565b604051806040016040528060008152602001600081525090565b600060208284031215610647578081fd5b815161065281610a31565b9392505050565b600080828403606081121561066c578182fd5b833561067781610a31565b92506040601f198201121561068a578182fd5b506020830190509250929050565b600080600080606085870312156106ad578182fd5b84356106b881610a31565b935060208501359250604085013567ffffffffffffffff808211156106db578384fd5b818701915087601f8301126106ee578384fd5b8135818111156106fc578485fd5b88602082850101111561070d578485fd5b95989497505060200194505050565b60006020828403121561072d578081fd5b81518015158114610652578182fd5b60006040828403121561074d578081fd5b6040516040810181811067ffffffffffffffff8211171561076c578283fd5b604052823581526020928301359281019290925250919050565b600060208284031215610797578081fd5b5051919050565b60008151808452815b818110156107c3576020818501810151868301820152016107a7565b818111156107d45782602083870101525b50601f01601f19169290920160200192915050565b80518252602090810151910152565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b03831681526060810161065260208301846107e9565b6001600160a01b03861681526020810185905260806040820181905281018390526000838560a08401378060a08584010152601f19601f850116820160a083820301606084015261088d60a082018561079e565b98975050505050505050565b90815260200190565b600060208252610652602083018461079e565b6020808252601d908201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604082015260600190565b60208082526018908201527f67617320726566756e642070657220756e697420697320300000000000000000604082015260600190565b60208082526013908201527239b2b73232b91034b9903737ba1030b236b4b760691b604082015260600190565b60208082526018908201527f67617320746f6b656e2061646472657373206973203078300000000000000000604082015260600190565b60208082526017908201527f667265652063616c6c2067617320636f73742069732030000000000000000000604082015260600190565b602080825260149082015273195e1d195c9b985b0818d85b1b0819985a5b195960621b604082015260600190565b60208082526018908201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604082015260600190565b604081016103ed82846107e9565b6001600160a01b0381168114610a4657600080fd5b5056fea2646970667358221220b77ebe0cde00777ca491cec97f593182f18ee9337b03641ca178c43dc62da9df64736f6c634300060c0033" +var GasProxyBin = "0x603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697603455603580549091166d4946c0e9f43f4dee607b0ef1fa1c17905560c060405261374a608081905261a0aa60a08190526036919091556037553480156200008b57600080fd5b5060405162000d4338038062000d43833981016040819052620000ae916200022c565b620000b982620000cc565b620000c4816200018e565b5050620002b4565b600054610100900460ff1680620000e85750620000e862000226565b80620000f7575060005460ff16155b6200011f5760405162461bcd60e51b8152600401620001169062000266565b60405180910390fd5b600054610100900460ff161580156200014b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200017757603380546001600160a01b0319166001600160a01b0384161790555b80156200018a576000805461ff00191690555b5050565b600054610100900460ff1680620001aa5750620001aa62000226565b80620001b9575060005460ff16155b620001d85760405162461bcd60e51b8152600401620001169062000266565b600054610100900460ff1615801562000204576000805460ff1961ff0019909116610100171660011790555b81156200017757603482905580156200018a576000805461ff00191690555050565b303b1590565b600080604083850312156200023f578182fd5b82516001600160a01b038116811462000256578283fd5b6020939093015192949293505050565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b610a7f80620002c46000396000f3fe6080604052600436106100555760003560e01c80633686ba421461005a5780633f579f4214610085578063719d5c6f146100a55780637d73b231146100c7578063c91d59fe146100e9578063e2b4ce97146100fe575b600080fd5b34801561006657600080fd5b5061006f610120565b60405161007c9190610a23565b60405180910390f35b610098610093366004610698565b610143565b60405161007c91906108a2565b3480156100b157600080fd5b506100c56100c0366004610659565b610300565b005b3480156100d357600080fd5b506100dc610341565b60405161007c9190610808565b3480156100f557600080fd5b506100dc610350565b34801561010a57600080fd5b5061011361035f565b60405161007c9190610899565b61012861061c565b50604080518082019091526036548152603754602082015290565b606061014e33610365565b6101735760405162461bcd60e51b815260040161016a906109ec565b60405180910390fd5b60005a905060006060876001600160a01b03168787876040516101979291906107f8565b60006040518083038185875af1925050503d80600081146101d4576040519150601f19603f3d011682016040523d82523d6000602084013e6101d9565b606091505b5091509150816101fb5760405162461bcd60e51b815260040161016a906109be565b7ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138888888885604051610232959493929190610839565b60405180910390a19250506000601036025a836152080103019050603560009054906101000a90046001600160a01b03166001600160a01b0316636366b93660366001015460366000015484018161028657fe5b046040518263ffffffff1660e01b81526004016102a39190610899565b602060405180830381600087803b1580156102bd57600080fd5b505af11580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610786565b505050949350505050565b610309336103f3565b6103255760405162461bcd60e51b815260040161016a90610923565b61033d826103383684900384018461073c565b61042b565b5050565b6033546001600160a01b031690565b6035546001600160a01b031690565b60345490565b60006103726034546104f6565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040161039d9190610808565b60206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed919061071c565b92915050565b60006104006034546104f6565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040161039d9190610808565b6001600160a01b0382166104515760405162461bcd60e51b815260040161016a90610950565b805161046f5760405162461bcd60e51b815260040161016a90610987565b60208101516104905760405162461bcd60e51b815260040161016a906108ec565b603580546001600160a01b0319166001600160a01b038416179055805160365560208101516037556040517fd82ec20581833e6b763037b2f1082d6b9c2ba3e8dbaaf4aab4c2b4c49d99fbb5906104ea908490849061081c565b60405180910390a15050565b6033546000906001600160a01b03166105215760405162461bcd60e51b815260040161016a906108b5565b603354604051630178b8bf60e01b81526001600160a01b0390911690630178b8bf90610551908590600401610899565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190610636565b6001600160a01b0316633b3b57de836040518263ffffffff1660e01b81526004016105cc9190610899565b60206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610636565b604051806040016040528060008152602001600081525090565b600060208284031215610647578081fd5b815161065281610a31565b9392505050565b600080828403606081121561066c578182fd5b833561067781610a31565b92506040601f198201121561068a578182fd5b506020830190509250929050565b600080600080606085870312156106ad578182fd5b84356106b881610a31565b935060208501359250604085013567ffffffffffffffff808211156106db578384fd5b818701915087601f8301126106ee578384fd5b8135818111156106fc578485fd5b88602082850101111561070d578485fd5b95989497505060200194505050565b60006020828403121561072d578081fd5b81518015158114610652578182fd5b60006040828403121561074d578081fd5b6040516040810181811067ffffffffffffffff8211171561076c578283fd5b604052823581526020928301359281019290925250919050565b600060208284031215610797578081fd5b5051919050565b60008151808452815b818110156107c3576020818501810151868301820152016107a7565b818111156107d45782602083870101525b50601f01601f19169290920160200192915050565b80518252602090810151910152565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b03831681526060810161065260208301846107e9565b6001600160a01b03861681526020810185905260806040820181905281018390526000838560a08401378060a08584010152601f19601f850116820160a083820301606084015261088d60a082018561079e565b98975050505050505050565b90815260200190565b600060208252610652602083018461079e565b6020808252601d908201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604082015260600190565b60208082526018908201527f67617320726566756e642070657220756e697420697320300000000000000000604082015260600190565b60208082526013908201527239b2b73232b91034b9903737ba1030b236b4b760691b604082015260600190565b60208082526018908201527f67617320746f6b656e2061646472657373206973203078300000000000000000604082015260600190565b60208082526017908201527f667265652063616c6c2067617320636f73742069732030000000000000000000604082015260600190565b602080825260149082015273195e1d195c9b985b0818d85b1b0819985a5b195960621b604082015260600190565b60208082526018908201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604082015260600190565b604081016103ed82846107e9565b6001600160a01b0381168114610a4657600080fd5b5056fea2646970667358221220a48efd8a9282fa53828edc9259181558187fc4037c78f02a3a0402da94b6beeb64736f6c634300060c0033" // DeployGasProxy deploys a new Ethereum contract, binding an instance of GasProxy to it. func DeployGasProxy(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *GasProxy, error) { diff --git a/pkg/bindings/holder.go b/pkg/bindings/holder.go index 328db516..4d999cf1 100644 --- a/pkg/bindings/holder.go +++ b/pkg/bindings/holder.go @@ -31,7 +31,7 @@ var ( const HolderABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_burnerContract_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"CashAndBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_nonRedeemableAddresses\",\"type\":\"address[]\"}],\"name\":\"nonRedeemableTokenClaim\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" // HolderBin is the compiled bytecode used for deploying new contracts. -var HolderBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b50604051620014593803806200145983398181016040526080811015620000a057600080fd5b5080516020820151604083015160609093015191929091620000c28362000102565b620000cd81620001d9565b620000d8826200028f565b5050603680546001600160a01b0319166001600160a01b039390931692909217909155506200034b565b600054610100900460ff16806200011e57506200011e62000345565b806200012d575060005460ff16155b6200016a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000196576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001c257603380546001600160a01b0319166001600160a01b0384161790555b8015620001d5576000805461ff00191690555b5050565b600054610100900460ff1680620001f55750620001f562000345565b8062000204575060005460ff16155b620002415760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff161580156200026d576000805460ff1961ff0019909116610100171660011790555b8115620001c25760348290558015620001d5576000805461ff00191690555050565b600054610100900460ff1680620002ab5750620002ab62000345565b80620002ba575060005460ff16155b620002f75760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000323576000805460ff1961ff0019909116610100171660011790555b8115620001c25760358290558015620001d5576000805461ff00191690555050565b303b1590565b6110d0806200035b6000396000f3fe6080604052600436106100595760003560e01c806327810b6e1461009f57806340f6a70f146100d05780637d73b23114610171578063877337b0146101865780639dc29fac146101ad578063e2b4ce97146101e65761009a565b3661009a576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b600080fd5b3480156100ab57600080fd5b506100b46101fb565b604080516001600160a01b039092168252519081900360200190f35b3480156100dc57600080fd5b5061015d600480360360408110156100f357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011e57600080fd5b82018360208201111561013057600080fd5b8035906020019184602083028401116401000000008311171561015257600080fd5b50909250905061020a565b604080519115158252519081900360200190f35b34801561017d57600080fd5b506100b46103ba565b34801561019257600080fd5b5061019b6103c9565b60408051918252519081900360200190f35b3480156101b957600080fd5b5061015d600480360360408110156101d057600080fd5b506001600160a01b0381351690602001356103cf565b3480156101f257600080fd5b5061019b6105a9565b6036546001600160a01b031690565b6000610215336105af565b61025c576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b828110156103af5761028b84848381811061027657fe5b905060200201356001600160a01b031661063c565b156102dd576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006103038585848181106102ee57fe5b905060200201356001600160a01b0316610655565b905080156103a6576103318686868581811061031b57fe5b905060200201356001600160a01b0316836106e6565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035f57fe5b905060200201356001600160a01b03168360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a15b5060010161025f565b506001949350505050565b6033546001600160a01b031690565b60355490565b6036546000906001600160a01b0316331461041b5760405162461bcd60e51b815260040180806020018281038252602181526020018061107a6021913960400191505060405180910390fd5b81610428575060016105a3565b60006104ae83603660009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d60208110156104a657600080fd5b505190610725565b905060606104ba610786565b905060005b815181101561059b5760006104e68383815181106104d957fe5b6020026020010151610655565b90508015610592576000610504856104fe848a610899565b906108f2565b90506105248885858151811061051657fe5b6020026020010151836106e6565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061055257fe5b60200260200101518360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104bf565b506001925050505b92915050565b60345490565b60006105bc603454610934565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561060857600080fd5b505afa15801561061c573d6000803e3d6000fd5b505050506040513d602081101561063257600080fd5b505190505b919050565b60008061064883610a55565b5098975050505050505050565b60006001600160a01b038216156106df57604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b50519050610637565b5047610637565b6001600160a01b03821661070c576107076001600160a01b03841682610be0565b610720565b6107206001600160a01b0383168483610cc5565b505050565b60008282018381101561077f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060610793603554610934565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107cb57600080fd5b505afa1580156107df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561080857600080fd5b810190808051604051939291908464010000000082111561082857600080fd5b90830190602082018581111561083d57600080fd5b825186602082028301116401000000008211171561085a57600080fd5b82525081516020918201928201910280838360005b8381101561088757818101518382015260200161086f565b50505050905001604052505050905090565b6000826108a8575060006105a3565b828202828482816108b557fe5b041461077f5760405162461bcd60e51b815260040180806020018281038252602181526020018061102f6021913960400191505060405180910390fd5b600061077f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d17565b6033546000906001600160a01b0316610994576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109e057600080fd5b505afa1580156109f4573d6000803e3d6000fd5b505050506040513d6020811015610a0a57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561060857600080fd5b6060600080600080600080610a6b603554610934565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610af457600080fd5b8101908080516040519392919084640100000000821115610b1457600080fd5b908301906020820185811115610b2957600080fd5b8251640100000000811182820188101715610b4357600080fd5b82525081516020918201929091019080838360005b83811015610b70578181015183820152602001610b58565b50505050905090810190601f168015610b9d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b80471015610c35576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610c80576040519150601f19603f3d011682016040523d82523d6000602084013e610c85565b606091505b50509050806107205760405162461bcd60e51b815260040180806020018281038252603a815260200180610ff5603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610720908490610db9565b60008183610da35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d68578181015183820152602001610d50565b50505050905090810190601f168015610d955780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610daf57fe5b0495945050505050565b6060610e0e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e6a9092919063ffffffff16565b80519091501561072057808060200190516020811015610e2d57600080fd5b50516107205760405162461bcd60e51b815260040180806020018281038252602a815260200180611050602a913960400191505060405180910390fd5b6060610e798484600085610e81565b949350505050565b6060610e8c85610fee565b610edd576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310610f1c5780518252601f199092019160209182019101610efd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f7e576040519150601f19603f3d011682016040523d82523d6000602084013e610f83565b606091505b50915091508115610f97579150610e799050565b805115610fa75780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610d68578181015183820152602001610d50565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a2646970667358221220d39049785a5ba6ea78fd47fe833c9b7d6de97e32a6ddc27f95ab1a420f86253364736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var HolderBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b50604051620014593803806200145983398181016040526080811015620000a057600080fd5b5080516020820151604083015160609093015191929091620000c28362000102565b620000cd81620001d9565b620000d8826200028f565b5050603680546001600160a01b0319166001600160a01b039390931692909217909155506200034b565b600054610100900460ff16806200011e57506200011e62000345565b806200012d575060005460ff16155b6200016a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000196576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001c257603380546001600160a01b0319166001600160a01b0384161790555b8015620001d5576000805461ff00191690555b5050565b600054610100900460ff1680620001f55750620001f562000345565b8062000204575060005460ff16155b620002415760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff161580156200026d576000805460ff1961ff0019909116610100171660011790555b8115620001c25760348290558015620001d5576000805461ff00191690555050565b600054610100900460ff1680620002ab5750620002ab62000345565b80620002ba575060005460ff16155b620002f75760405162461bcd60e51b815260040180806020018281038252602e8152602001806200142b602e913960400191505060405180910390fd5b600054610100900460ff1615801562000323576000805460ff1961ff0019909116610100171660011790555b8115620001c25760358290558015620001d5576000805461ff00191690555050565b303b1590565b6110d0806200035b6000396000f3fe6080604052600436106100595760003560e01c806327810b6e1461009f57806340f6a70f146100d05780637d73b23114610171578063877337b0146101865780639dc29fac146101ad578063e2b4ce97146101e65761009a565b3661009a576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b600080fd5b3480156100ab57600080fd5b506100b46101fb565b604080516001600160a01b039092168252519081900360200190f35b3480156100dc57600080fd5b5061015d600480360360408110156100f357600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011e57600080fd5b82018360208201111561013057600080fd5b8035906020019184602083028401116401000000008311171561015257600080fd5b50909250905061020a565b604080519115158252519081900360200190f35b34801561017d57600080fd5b506100b46103ba565b34801561019257600080fd5b5061019b6103c9565b60408051918252519081900360200190f35b3480156101b957600080fd5b5061015d600480360360408110156101d057600080fd5b506001600160a01b0381351690602001356103cf565b3480156101f257600080fd5b5061019b6105a9565b6036546001600160a01b031690565b6000610215336105af565b61025c576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b828110156103af5761028b84848381811061027657fe5b905060200201356001600160a01b031661063c565b156102dd576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006103038585848181106102ee57fe5b905060200201356001600160a01b0316610655565b905080156103a6576103318686868581811061031b57fe5b905060200201356001600160a01b0316836106e6565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035f57fe5b905060200201356001600160a01b03168360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a15b5060010161025f565b506001949350505050565b6033546001600160a01b031690565b60355490565b6036546000906001600160a01b0316331461041b5760405162461bcd60e51b815260040180806020018281038252602181526020018061107a6021913960400191505060405180910390fd5b81610428575060016105a3565b60006104ae83603660009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561047c57600080fd5b505afa158015610490573d6000803e3d6000fd5b505050506040513d60208110156104a657600080fd5b505190610725565b905060606104ba610786565b905060005b815181101561059b5760006104e68383815181106104d957fe5b6020026020010151610655565b90508015610592576000610504856104fe848a610899565b906108f2565b90506105248885858151811061051657fe5b6020026020010151836106e6565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061055257fe5b60200260200101518360405180846001600160a01b03168152602001836001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104bf565b506001925050505b92915050565b60345490565b60006105bc603454610934565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561060857600080fd5b505afa15801561061c573d6000803e3d6000fd5b505050506040513d602081101561063257600080fd5b505190505b919050565b60008061064883610a55565b5098975050505050505050565b60006001600160a01b038216156106df57604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d60208110156106d657600080fd5b50519050610637565b5047610637565b6001600160a01b03821661070c576107076001600160a01b03841682610be0565b610720565b6107206001600160a01b0383168483610cc5565b505050565b60008282018381101561077f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6060610793603554610934565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107cb57600080fd5b505afa1580156107df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561080857600080fd5b810190808051604051939291908464010000000082111561082857600080fd5b90830190602082018581111561083d57600080fd5b825186602082028301116401000000008211171561085a57600080fd5b82525081516020918201928201910280838360005b8381101561088757818101518382015260200161086f565b50505050905001604052505050905090565b6000826108a8575060006105a3565b828202828482816108b557fe5b041461077f5760405162461bcd60e51b815260040180806020018281038252602181526020018061102f6021913960400191505060405180910390fd5b600061077f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d17565b6033546000906001600160a01b0316610994576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109e057600080fd5b505afa1580156109f4573d6000803e3d6000fd5b505050506040513d6020811015610a0a57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561060857600080fd5b6060600080600080600080610a6b603554610934565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610af457600080fd5b8101908080516040519392919084640100000000821115610b1457600080fd5b908301906020820185811115610b2957600080fd5b8251640100000000811182820188101715610b4357600080fd5b82525081516020918201929091019080838360005b83811015610b70578181015183820152602001610b58565b50505050905090810190601f168015610b9d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b80471015610c35576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610c80576040519150601f19603f3d011682016040523d82523d6000602084013e610c85565b606091505b50509050806107205760405162461bcd60e51b815260040180806020018281038252603a815260200180610ff5603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610720908490610db9565b60008183610da35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d68578181015183820152602001610d50565b50505050905090810190601f168015610d955780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610daf57fe5b0495945050505050565b6060610e0e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e6a9092919063ffffffff16565b80519091501561072057808060200190516020811015610e2d57600080fd5b50516107205760405162461bcd60e51b815260040180806020018281038252602a815260200180611050602a913960400191505060405180910390fd5b6060610e798484600085610e81565b949350505050565b6060610e8c85610fee565b610edd576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310610f1c5780518252601f199092019160209182019101610efd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610f7e576040519150601f19603f3d011682016040523d82523d6000602084013e610f83565b606091505b50915091508115610f97579150610e799050565b805115610fa75780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610d68578181015183820152602001610d50565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a2646970667358221220e710838748d2f0e692e33d47737aeda8eca4d0e5996cbf7e48bff81578298d4e64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployHolder deploys a new Ethereum contract, binding an instance of Holder to it. func DeployHolder(auth *bind.TransactOpts, backend bind.ContractBackend, _burnerContract_ common.Address, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Holder, error) { diff --git a/pkg/bindings/licence.go b/pkg/bindings/licence.go index 56ad640d..bf0b5c83 100644 --- a/pkg/bindings/licence.go +++ b/pkg/bindings/licence.go @@ -31,7 +31,7 @@ var ( const LicenceABI = "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_licence_\",\"type\":\"uint256\"},{\"internalType\":\"addresspayable\",\"name\":\"_float_\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_holder_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tknAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TransferredToCryptoFloat\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TransferredToTokenHolder\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newFloat\",\"type\":\"address\"}],\"name\":\"UpdatedCryptoFloat\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newAmount\",\"type\":\"uint256\"}],\"name\":\"UpdatedLicenceAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newDAO\",\"type\":\"address\"}],\"name\":\"UpdatedLicenceDAO\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newTKN\",\"type\":\"address\"}],\"name\":\"UpdatedTKNContractAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newHolder\",\"type\":\"address\"}],\"name\":\"UpdatedTokenHolder\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_AMOUNT_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_AMOUNT_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cryptoFloat\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"floatLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"holderLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceAmountScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceDAO\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceDAOLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"load\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockFloat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockHolder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockLicenceDAO\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockTKNContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tknContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tknContractAddressLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenHolder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_newFloat\",\"type\":\"address\"}],\"name\":\"updateFloat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_newHolder\",\"type\":\"address\"}],\"name\":\"updateHolder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newAmount\",\"type\":\"uint256\"}],\"name\":\"updateLicenceAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newDAO\",\"type\":\"address\"}],\"name\":\"updateLicenceDAO\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newTKN\",\"type\":\"address\"}],\"name\":\"updateTKNContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" // LicenceBin is the compiled bytecode used for deploying new contracts. -var LicenceBin = "0x6080604052603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034556035805490911673aaaf91d9b90df800df4f55c205fd6989c977e73a1790553480156200007857600080fd5b50604051620019e8380380620019e8833981810160405260c08110156200009e57600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909160018610801590620000d757506103e88611155b62000129576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6200013482620001a2565b6200013f8162000279565b6039869055603680546001600160a01b038088166001600160a01b0319928316179092556037805487841692169190911790558316156200019657603580546001600160a01b0319166001600160a01b0385161790555b50505050505062000335565b600054610100900460ff1680620001be5750620001be6200032f565b80620001cd575060005460ff16155b6200020a5760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff1615801562000236576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200026257603380546001600160a01b0319166001600160a01b0384161790555b801562000275576000805461ff00191690555b5050565b600054610100900460ff1680620002955750620002956200032f565b80620002a4575060005460ff16155b620002e15760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff161580156200030d576000805460ff1961ff0019909116610100171660011790555b811562000262576034829055801562000275576000805461ff00191690555050565b303b1590565b61167580620003456000396000f3fe60806040526004361061014f5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd67146103af578063d1696b16146103e2578063e2b4ce97146103f7578063e30c5fa81461040c578063e3d8024214610421578063f15ff4551461045457610156565b8063996cba681461030357806399a5e1d014610346578063a036ba601461035b578063ac904c6314610370578063ca0e2e2014610385578063d08b4ecc1461039a57610156565b806342719faa1161010857806342719faa1461023e5780634ac22b3c1461027157806368ce74e7146102865780637d73b231146102b0578063837c70ef146102c5578063940b9c3b146102ee57610156565b80630bf25c911461015b5780630d42e82f146101725780631b3c96b4146101a55780633a7afe02146101d15780633acec15f14610202578063420a83e71461022957610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610469565b005b34801561017e57600080fd5b506101706004803603602081101561019557600080fd5b50356001600160a01b03166104c6565b610170600480360360408110156101bb57600080fd5b506001600160a01b0381351690602001356105ac565b3480156101dd57600080fd5b506101e66107de565b604080516001600160a01b039092168252519081900360200190f35b34801561020e57600080fd5b506102176107ed565b60408051918252519081900360200190f35b34801561023557600080fd5b506101e66107f2565b34801561024a57600080fd5b506101706004803603602081101561026157600080fd5b50356001600160a01b0316610801565b34801561027d57600080fd5b506101706108f7565b34801561029257600080fd5b50610170600480360360208110156102a957600080fd5b5035610954565b3480156102bc57600080fd5b506101e6610a52565b3480156102d157600080fd5b506102da610a61565b604080519115158252519081900360200190f35b3480156102fa57600080fd5b506102da610a71565b34801561030f57600080fd5b506101706004803603606081101561032657600080fd5b506001600160a01b03813581169160208101359091169060400135610a81565b34801561035257600080fd5b506101e6610b23565b34801561036757600080fd5b506101e6610b32565b34801561037c57600080fd5b50610217610b41565b34801561039157600080fd5b50610217610b47565b3480156103a657600080fd5b50610170610b4d565b3480156103bb57600080fd5b50610170600480360360208110156103d257600080fd5b50356001600160a01b0316610baa565b3480156103ee57600080fd5b50610170610c92565b34801561040357600080fd5b50610217610cef565b34801561041857600080fd5b506102da610cf5565b34801561042d57600080fd5b506101706004803603602081101561044457600080fd5b50356001600160a01b0316610d05565b34801561046057600080fd5b506102da610deb565b61047233610dfb565b6104b1576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b81b1916600160b81b179055565b6104cf33610dfb565b61050e576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610516610a61565b15610558576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60355481906001600160a01b03848116911614156105e5576036546105e0906001600160a01b038581169133911684610e86565b610786565b61060a6103e8603954016106046103e885610ee690919063ffffffff16565b90610f48565b905060006106188383610f8a565b90506001600160a01b0384161561066657603754610645906001600160a01b038681169133911684610e86565b603654610661906001600160a01b038681169133911685610e86565b610731565b8234146106ba576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6037546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156106f4573d6000803e3d6000fd5b506036546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561072f573d6000803e3d6000fd5b505b603754604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b603654604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6038546001600160a01b031690565b600181565b6037546001600160a01b031690565b61080a33610dfb565b610849576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610851610deb565b156108a3576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b603780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090033610dfb565b61093f576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b01b1916600160b01b179055565b6038546001600160a01b031633146109b3576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109c657506103e88111155b610a17576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60398190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6033546001600160a01b031690565b603854600160b81b900460ff1690565b603854600160a01b900460ff1690565b610a8a33610dfb565b610ac9576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610ad4838383610fcc565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6035546001600160a01b031690565b6036546001600160a01b031690565b60395490565b6103e881565b610b5633610dfb565b610b95576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a01b1916600160a01b179055565b610bb333610dfb565b610bf2576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610bfa610a71565b15610c3e576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b603680546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610c9b33610dfb565b610cda576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a81b1916600160a81b179055565b60345490565b603854600160b01b900460ff1690565b610d0e33610dfb565b610d4d576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610d55610cf5565b15610d97576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b603854600160a81b900460ff1690565b6000610e0860345461100b565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e5457600080fd5b505afa158015610e68573d6000803e3d6000fd5b505050506040513d6020811015610e7e57600080fd5b505192915050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ee090859061112c565b50505050565b600082610ef557506000610f42565b82820282848281610f0257fe5b0414610f3f5760405162461bcd60e51b81526004018080602001828103825260218152602001806115d56021913960400191505060405180910390fd5b90505b92915050565b6000610f3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111dd565b6000610f3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061127f565b6001600160a01b038216610ff257610fed6001600160a01b038416826112d9565b611006565b6110066001600160a01b03831684836113be565b505050565b6033546000906001600160a01b031661106b576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110b757600080fd5b505afa1580156110cb573d6000803e3d6000fd5b505050506040513d60208110156110e157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e5457600080fd5b6060611181826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114109092919063ffffffff16565b805190915015611006578080602001905160208110156111a057600080fd5b50516110065760405162461bcd60e51b815260040180806020018281038252602a815260200180611616602a913960400191505060405180910390fd5b600081836112695760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578181015183820152602001611216565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161127557fe5b0495945050505050565b600081848411156112d15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561122e578181015183820152602001611216565b505050900390565b8047101561132e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611379576040519150601f19603f3d011682016040523d82523d6000602084013e61137e565b606091505b50509050806110065760405162461bcd60e51b815260040180806020018281038252603a81526020018061159b603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261100690849061112c565b606061141f8484600085611427565b949350505050565b606061143285611594565b611483576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106114c25780518252601f1990920191602091820191016114a3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611524576040519150601f19603f3d011682016040523d82523d6000602084013e611529565b606091505b5091509150811561153d57915061141f9050565b80511561154d5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561122e578181015183820152602001611216565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7773656e646572206973206e6f742061646d696e000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220ba5025b4b89cca724314d8d2c4d381f65f4f0dd54f7d436b4faa8f55113d7aa864736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var LicenceBin = "0x6080604052603380546001600160a01b03199081166e0c2e074ec69a0dfb2997ba6c7d2e1e179091557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034556035805490911673aaaf91d9b90df800df4f55c205fd6989c977e73a1790553480156200007857600080fd5b50604051620019e8380380620019e8833981810160405260c08110156200009e57600080fd5b508051602082015160408301516060840151608085015160a090950151939492939192909160018610801590620000d757506103e88611155b62000129576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6200013482620001a2565b6200013f8162000279565b6039869055603680546001600160a01b038088166001600160a01b0319928316179092556037805487841692169190911790558316156200019657603580546001600160a01b0319166001600160a01b0385161790555b50505050505062000335565b600054610100900460ff1680620001be5750620001be6200032f565b80620001cd575060005460ff16155b6200020a5760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff1615801562000236576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200026257603380546001600160a01b0319166001600160a01b0384161790555b801562000275576000805461ff00191690555b5050565b600054610100900460ff1680620002955750620002956200032f565b80620002a4575060005460ff16155b620002e15760405162461bcd60e51b815260040180806020018281038252602e815260200180620019ba602e913960400191505060405180910390fd5b600054610100900460ff161580156200030d576000805460ff1961ff0019909116610100171660011790555b811562000262576034829055801562000275576000805461ff00191690555050565b303b1590565b61167580620003456000396000f3fe60806040526004361061014f5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd67146103af578063d1696b16146103e2578063e2b4ce97146103f7578063e30c5fa81461040c578063e3d8024214610421578063f15ff4551461045457610156565b8063996cba681461030357806399a5e1d014610346578063a036ba601461035b578063ac904c6314610370578063ca0e2e2014610385578063d08b4ecc1461039a57610156565b806342719faa1161010857806342719faa1461023e5780634ac22b3c1461027157806368ce74e7146102865780637d73b231146102b0578063837c70ef146102c5578063940b9c3b146102ee57610156565b80630bf25c911461015b5780630d42e82f146101725780631b3c96b4146101a55780633a7afe02146101d15780633acec15f14610202578063420a83e71461022957610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610469565b005b34801561017e57600080fd5b506101706004803603602081101561019557600080fd5b50356001600160a01b03166104c6565b610170600480360360408110156101bb57600080fd5b506001600160a01b0381351690602001356105ac565b3480156101dd57600080fd5b506101e66107de565b604080516001600160a01b039092168252519081900360200190f35b34801561020e57600080fd5b506102176107ed565b60408051918252519081900360200190f35b34801561023557600080fd5b506101e66107f2565b34801561024a57600080fd5b506101706004803603602081101561026157600080fd5b50356001600160a01b0316610801565b34801561027d57600080fd5b506101706108f7565b34801561029257600080fd5b50610170600480360360208110156102a957600080fd5b5035610954565b3480156102bc57600080fd5b506101e6610a52565b3480156102d157600080fd5b506102da610a61565b604080519115158252519081900360200190f35b3480156102fa57600080fd5b506102da610a71565b34801561030f57600080fd5b506101706004803603606081101561032657600080fd5b506001600160a01b03813581169160208101359091169060400135610a81565b34801561035257600080fd5b506101e6610b23565b34801561036757600080fd5b506101e6610b32565b34801561037c57600080fd5b50610217610b41565b34801561039157600080fd5b50610217610b47565b3480156103a657600080fd5b50610170610b4d565b3480156103bb57600080fd5b50610170600480360360208110156103d257600080fd5b50356001600160a01b0316610baa565b3480156103ee57600080fd5b50610170610c92565b34801561040357600080fd5b50610217610cef565b34801561041857600080fd5b506102da610cf5565b34801561042d57600080fd5b506101706004803603602081101561044457600080fd5b50356001600160a01b0316610d05565b34801561046057600080fd5b506102da610deb565b61047233610dfb565b6104b1576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b81b1916600160b81b179055565b6104cf33610dfb565b61050e576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610516610a61565b15610558576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60355481906001600160a01b03848116911614156105e5576036546105e0906001600160a01b038581169133911684610e86565b610786565b61060a6103e8603954016106046103e885610ee690919063ffffffff16565b90610f48565b905060006106188383610f8a565b90506001600160a01b0384161561066657603754610645906001600160a01b038681169133911684610e86565b603654610661906001600160a01b038681169133911685610e86565b610731565b8234146106ba576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6037546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156106f4573d6000803e3d6000fd5b506036546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561072f573d6000803e3d6000fd5b505b603754604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b603654604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6038546001600160a01b031690565b600181565b6037546001600160a01b031690565b61080a33610dfb565b610849576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610851610deb565b156108a3576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b603780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090033610dfb565b61093f576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60b01b1916600160b01b179055565b6038546001600160a01b031633146109b3576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109c657506103e88111155b610a17576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60398190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6033546001600160a01b031690565b603854600160b81b900460ff1690565b603854600160a01b900460ff1690565b610a8a33610dfb565b610ac9576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610ad4838383610fcc565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6035546001600160a01b031690565b6036546001600160a01b031690565b60395490565b6103e881565b610b5633610dfb565b610b95576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a01b1916600160a01b179055565b610bb333610dfb565b610bf2576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610bfa610a71565b15610c3e576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b603680546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610c9b33610dfb565b610cda576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b6038805460ff60a81b1916600160a81b179055565b60345490565b603854600160b01b900460ff1690565b610d0e33610dfb565b610d4d576040805162461bcd60e51b815260206004820152601360248201526000805160206115f6833981519152604482015290519081900360640190fd5b610d55610cf5565b15610d97576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b603880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b603854600160a81b900460ff1690565b6000610e0860345461100b565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e5457600080fd5b505afa158015610e68573d6000803e3d6000fd5b505050506040513d6020811015610e7e57600080fd5b505192915050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ee090859061112c565b50505050565b600082610ef557506000610f42565b82820282848281610f0257fe5b0414610f3f5760405162461bcd60e51b81526004018080602001828103825260218152602001806115d56021913960400191505060405180910390fd5b90505b92915050565b6000610f3f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111dd565b6000610f3f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061127f565b6001600160a01b038216610ff257610fed6001600160a01b038416826112d9565b611006565b6110066001600160a01b03831684836113be565b505050565b6033546000906001600160a01b031661106b576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110b757600080fd5b505afa1580156110cb573d6000803e3d6000fd5b505050506040513d60208110156110e157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e5457600080fd5b6060611181826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114109092919063ffffffff16565b805190915015611006578080602001905160208110156111a057600080fd5b50516110065760405162461bcd60e51b815260040180806020018281038252602a815260200180611616602a913960400191505060405180910390fd5b600081836112695760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561122e578181015183820152602001611216565b50505050905090810190601f16801561125b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161127557fe5b0495945050505050565b600081848411156112d15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561122e578181015183820152602001611216565b505050900390565b8047101561132e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611379576040519150601f19603f3d011682016040523d82523d6000602084013e61137e565b606091505b50509050806110065760405162461bcd60e51b815260040180806020018281038252603a81526020018061159b603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261100690849061112c565b606061141f8484600085611427565b949350505050565b606061143285611594565b611483576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106114c25780518252601f1990920191602091820191016114a3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611524576040519150601f19603f3d011682016040523d82523d6000602084013e611529565b606091505b5091509150811561153d57915061141f9050565b80511561154d5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561122e578181015183820152602001611216565b3b15159056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7773656e646572206973206e6f742061646d696e000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122074521ee05d521d137e33bf68500ede1dd58c0ceb5930a843d1a6ad105a4dee7164736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployLicence deploys a new Ethereum contract, binding an instance of Licence to it. func DeployLicence(auth *bind.TransactOpts, backend bind.ContractBackend, _licence_ *big.Int, _float_ common.Address, _holder_ common.Address, _tknAddress_ common.Address, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Licence, error) { diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index 0e5797ff..c248138f 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220f100ebfc14198f8d38d348a25a6ad2f95ca1ae467d20050b2666099a41e1555864736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220a83e8e1f4b9b93698333e312f33f67cb7dca2a9e7cfa3e1ff861b77b196d466664736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/mocks/tokenWhitelistableExporter.go b/pkg/bindings/mocks/tokenWhitelistableExporter.go index 1dbe3a38..ee70638c 100644 --- a/pkg/bindings/mocks/tokenWhitelistableExporter.go +++ b/pkg/bindings/mocks/tokenWhitelistableExporter.go @@ -31,7 +31,7 @@ var ( const TokenWhitelistableExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getERC20RecipientAndAmount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStablecoinInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"isTokenAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"isTokenLoadable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"isTokenRedeemable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemableTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_updateDate\",\"type\":\"uint256\"}],\"name\":\"updateTokenRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // TokenWhitelistableExporterBin is the compiled bytecode used for deploying new contracts. -var TokenWhitelistableExporterBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966034553480156200005657600080fd5b5060405162000ea438038062000ea4833981810160405260408110156200007c57600080fd5b5080516020909101516200009082620000a3565b6200009b816200017a565b505062000236565b600054610100900460ff1680620000bf5750620000bf62000230565b80620000ce575060005460ff16155b6200010b5760405162461bcd60e51b815260040180806020018281038252602e81526020018062000e76602e913960400191505060405180910390fd5b600054610100900460ff1615801562000137576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200016357603380546001600160a01b0319166001600160a01b0384161790555b801562000176576000805461ff00191690555b5050565b600054610100900460ff16806200019657506200019662000230565b80620001a5575060005460ff16155b620001e25760405162461bcd60e51b815260040180806020018281038252602e81526020018062000e76602e913960400191505060405180910390fd5b600054610100900460ff161580156200020e576000805460ff1961ff0019909116610100171660011790555b811562000163576034829055801562000176576000805461ff00191690555050565b303b1590565b610c3080620002466000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023c5780637d73b23114610244578063877337b014610268578063afc72e9314610282578063d545782e14610323578063dcc922bc14610357576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b65780633efec5e9146101dc578063443dd2a4146101e4575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037d565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b031661038e565b6040518080602001888152602001878152602001861515815260200185151581526020018415158152602001838152602001828103825289818151815260200191508051906020019080838360005b8381101561017557818101518382015260200161015d565b50505050905090810190601f1680156101a25780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101cc57600080fd5b50356001600160a01b03166103b9565b61010e6103c4565b6101ec6103ed565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610228578181015183820152602001610210565b505050509050019250505060405180910390f35b6101ec6103fc565b61024c610406565b604080516001600160a01b039092168252519081900360200190f35b610270610415565b60408051918252519081900360200190f35b6103006004803603604081101561029857600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c257600080fd5b8201836020820111156102d457600080fd5b803590602001918460018302840111600160201b831117156102f557600080fd5b50909250905061041b565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103556004803603606081101561033957600080fd5b506001600160a01b03813516906020810135906040013561046a565b005b6100d46004803603602081101561036d57600080fd5b50356001600160a01b031661047a565b600061038882610485565b92915050565b60606000806000806000806103a28861049f565b959e949d50929b5090995097509550909350915050565b600061038882610628565b60606000806000806000806103d7610642565b959d949c50929a50909850965094509092509050565b60606103f76107b1565b905090565b60606103f76108c2565b6033546001600160a01b031690565b60345490565b60008061045e8585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061090792505050565b91509150935093915050565b610475838383610a08565b505050565b600061038882610a8e565b6000806104918361049f565b509098975050505050505050565b60606000806000806000806104b5603454610aa7565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561050157600080fd5b505afa158015610515573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561053e57600080fd5b8101908080516040519392919084600160201b82111561055d57600080fd5b90830190602082018581111561057257600080fd5b8251600160201b81118282018810171561058b57600080fd5b82525081516020918201929091019080838360005b838110156105b85781810151838201526020016105a0565b50505050905090810190601f1680156105e55780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b6000806106348361049f565b509198975050505050505050565b6060600080600080600080610658603454610aa7565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069057600080fd5b505afa1580156106a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106cd57600080fd5b8101908080516040519392919084600160201b8211156106ec57600080fd5b90830190602082018581111561070157600080fd5b8251600160201b81118282018810171561071a57600080fd5b82525081516020918201929091019080838360005b8381101561074757818101518382015260200161072f565b50505050905090810190601f1680156107745780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107be603454610aa7565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b1580156107f657600080fd5b505afa15801561080a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083357600080fd5b8101908080516040519392919084600160201b82111561085257600080fd5b90830190602082018581111561086757600080fd5b82518660208202830111600160201b8211171561088357600080fd5b82525081516020918201928201910280838360005b838110156108b0578181015183820152602001610898565b50505050905001604052505050905090565b60606108cf603454610aa7565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107f657600080fd5b600080610915603454610aa7565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610980578181015183820152602001610968565b50505050905090810190601f1680156109ad5780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109ca57600080fd5b505afa1580156109de573d6000803e3d6000fd5b505050506040513d60408110156109f457600080fd5b508051602090910151909590945092505050565b610a13603454610aa7565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a7157600080fd5b505af1158015610a85573d6000803e3d6000fd5b50505050505050565b600080610a9a8361049f565b5098975050505050505050565b6033546000906001600160a01b0316610b07576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b5357600080fd5b505afa158015610b67573d6000803e3d6000fd5b505050506040513d6020811015610b7d57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610bc857600080fd5b505afa158015610bdc573d6000803e3d6000fd5b505050506040513d6020811015610bf257600080fd5b50519291505056fea264697066735822122075a81a34c79c35ad4029a7d44a9bcd4546b8a482b12b1b64096fc8303a17ff3b64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var TokenWhitelistableExporterBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966034553480156200005657600080fd5b5060405162000ea438038062000ea4833981810160405260408110156200007c57600080fd5b5080516020909101516200009082620000a3565b6200009b816200017a565b505062000236565b600054610100900460ff1680620000bf5750620000bf62000230565b80620000ce575060005460ff16155b6200010b5760405162461bcd60e51b815260040180806020018281038252602e81526020018062000e76602e913960400191505060405180910390fd5b600054610100900460ff1615801562000137576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200016357603380546001600160a01b0319166001600160a01b0384161790555b801562000176576000805461ff00191690555b5050565b600054610100900460ff16806200019657506200019662000230565b80620001a5575060005460ff16155b620001e25760405162461bcd60e51b815260040180806020018281038252602e81526020018062000e76602e913960400191505060405180910390fd5b600054610100900460ff161580156200020e576000805460ff1961ff0019909116610100171660011790555b811562000163576034829055801562000176576000805461ff00191690555050565b303b1590565b610c3080620002466000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023c5780637d73b23114610244578063877337b014610268578063afc72e9314610282578063d545782e14610323578063dcc922bc14610357576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b65780633efec5e9146101dc578063443dd2a4146101e4575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037d565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b031661038e565b6040518080602001888152602001878152602001861515815260200185151581526020018415158152602001838152602001828103825289818151815260200191508051906020019080838360005b8381101561017557818101518382015260200161015d565b50505050905090810190601f1680156101a25780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101cc57600080fd5b50356001600160a01b03166103b9565b61010e6103c4565b6101ec6103ed565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610228578181015183820152602001610210565b505050509050019250505060405180910390f35b6101ec6103fc565b61024c610406565b604080516001600160a01b039092168252519081900360200190f35b610270610415565b60408051918252519081900360200190f35b6103006004803603604081101561029857600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c257600080fd5b8201836020820111156102d457600080fd5b803590602001918460018302840111600160201b831117156102f557600080fd5b50909250905061041b565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103556004803603606081101561033957600080fd5b506001600160a01b03813516906020810135906040013561046a565b005b6100d46004803603602081101561036d57600080fd5b50356001600160a01b031661047a565b600061038882610485565b92915050565b60606000806000806000806103a28861049f565b959e949d50929b5090995097509550909350915050565b600061038882610628565b60606000806000806000806103d7610642565b959d949c50929a50909850965094509092509050565b60606103f76107b1565b905090565b60606103f76108c2565b6033546001600160a01b031690565b60345490565b60008061045e8585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061090792505050565b91509150935093915050565b610475838383610a08565b505050565b600061038882610a8e565b6000806104918361049f565b509098975050505050505050565b60606000806000806000806104b5603454610aa7565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561050157600080fd5b505afa158015610515573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561053e57600080fd5b8101908080516040519392919084600160201b82111561055d57600080fd5b90830190602082018581111561057257600080fd5b8251600160201b81118282018810171561058b57600080fd5b82525081516020918201929091019080838360005b838110156105b85781810151838201526020016105a0565b50505050905090810190601f1680156105e55780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b6000806106348361049f565b509198975050505050505050565b6060600080600080600080610658603454610aa7565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069057600080fd5b505afa1580156106a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106cd57600080fd5b8101908080516040519392919084600160201b8211156106ec57600080fd5b90830190602082018581111561070157600080fd5b8251600160201b81118282018810171561071a57600080fd5b82525081516020918201929091019080838360005b8381101561074757818101518382015260200161072f565b50505050905090810190601f1680156107745780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107be603454610aa7565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b1580156107f657600080fd5b505afa15801561080a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083357600080fd5b8101908080516040519392919084600160201b82111561085257600080fd5b90830190602082018581111561086757600080fd5b82518660208202830111600160201b8211171561088357600080fd5b82525081516020918201928201910280838360005b838110156108b0578181015183820152602001610898565b50505050905001604052505050905090565b60606108cf603454610aa7565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107f657600080fd5b600080610915603454610aa7565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610980578181015183820152602001610968565b50505050905090810190601f1680156109ad5780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109ca57600080fd5b505afa1580156109de573d6000803e3d6000fd5b505050506040513d60408110156109f457600080fd5b508051602090910151909590945092505050565b610a13603454610aa7565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a7157600080fd5b505af1158015610a85573d6000803e3d6000fd5b50505050505050565b600080610a9a8361049f565b5098975050505050505050565b6033546000906001600160a01b0316610b07576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b5357600080fd5b505afa158015610b67573d6000803e3d6000fd5b505050506040513d6020811015610b7d57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610bc857600080fd5b505afa158015610bdc573d6000803e3d6000fd5b505050506040513d6020811015610bf257600080fd5b50519291505056fea264697066735822122072c550a038b47a13cb1b4fd66133c76d08fd6b459370a80bb3bb49ce183f906864736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployTokenWhitelistableExporter deploys a new Ethereum contract, binding an instance of TokenWhitelistableExporter to it. func DeployTokenWhitelistableExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _tokenWhitelistNode_ [32]byte) (common.Address, *types.Transaction, *TokenWhitelistableExporter, error) { diff --git a/pkg/bindings/mocks/wallet.go b/pkg/bindings/mocks/wallet.go index f0894245..8eda5692 100644 --- a/pkg/bindings/mocks/wallet.go +++ b/pkg/bindings/mocks/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"ConfirmedOperation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"confirmOperation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"sendValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b506040516106ee3803806106ee8339818101604052604081101561007857600080fd5b50805160209091015161008a8261009a565b61009381610168565b505061021b565b600054610100900460ff16806100b357506100b3610215565b806100c1575060005460ff16155b6100fc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff16158015610127576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561015257603380546001600160a01b0319166001600160a01b0384161790555b8015610164576000805461ff00191690555b5050565b600054610100900460ff16806101815750610181610215565b8061018f575060005460ff16155b6101ca5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff161580156101f5576000805460ff1961ff0019909116610100171660011790555b81156101525760348290558015610164576000805461ff00191690555050565b303b1590565b6104968061022a6000396000f3fe60806040526004361061004e5760003560e01c806324a084df1461005a5780636945341f146100955780637d73b231146100aa578063a9059cbb146100db578063e2b4ce971461011457610055565b3661005557005b600080fd5b34801561006657600080fd5b506100936004803603604081101561007d57600080fd5b506001600160a01b03813516906020013561013b565b005b3480156100a157600080fd5b506100936101d9565b3480156100b657600080fd5b506100bf610269565b604080516001600160a01b039092168252519081900360200190f35b3480156100e757600080fd5b50610093600480360360408110156100fe57600080fd5b506001600160a01b038135169060200135610278565b34801561012057600080fd5b506101296102ae565b60408051918252519081900360200190f35b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b50509050806101d4576040805162461bcd60e51b815260206004820152601060248201526f1cd95b9915985b1d594819985a5b195960821b604482015290519081900360640190fd5b505050565b6101e2336102b4565b610233576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b604080516001815290517f0e8fe5b3baccd13c21d6a20906753a2bbcd86f70d69f4bde83f4e38cf3aae12b9181900360200190a1565b6033546001600160a01b031690565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156101d4573d6000803e3d6000fd5b60345490565b60006102c160345461033f565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b505192915050565b6033546000906001600160a01b031661039f576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d602081101561041557600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561030d57600080fdfea2646970667358221220eaf357a724af327bccdd82b38b002160bf2fbe0f181a69220df934aa4a537e5864736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b506040516106ee3803806106ee8339818101604052604081101561007857600080fd5b50805160209091015161008a8261009a565b61009381610168565b505061021b565b600054610100900460ff16806100b357506100b3610215565b806100c1575060005460ff16155b6100fc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff16158015610127576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561015257603380546001600160a01b0319166001600160a01b0384161790555b8015610164576000805461ff00191690555b5050565b600054610100900460ff16806101815750610181610215565b8061018f575060005460ff16155b6101ca5760405162461bcd60e51b815260040180806020018281038252602e8152602001806106c0602e913960400191505060405180910390fd5b600054610100900460ff161580156101f5576000805460ff1961ff0019909116610100171660011790555b81156101525760348290558015610164576000805461ff00191690555050565b303b1590565b6104968061022a6000396000f3fe60806040526004361061004e5760003560e01c806324a084df1461005a5780636945341f146100955780637d73b231146100aa578063a9059cbb146100db578063e2b4ce971461011457610055565b3661005557005b600080fd5b34801561006657600080fd5b506100936004803603604081101561007d57600080fd5b506001600160a01b03813516906020013561013b565b005b3480156100a157600080fd5b506100936101d9565b3480156100b657600080fd5b506100bf610269565b604080516001600160a01b039092168252519081900360200190f35b3480156100e757600080fd5b50610093600480360360408110156100fe57600080fd5b506001600160a01b038135169060200135610278565b34801561012057600080fd5b506101296102ae565b60408051918252519081900360200190f35b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b50509050806101d4576040805162461bcd60e51b815260206004820152601060248201526f1cd95b9915985b1d594819985a5b195960821b604482015290519081900360640190fd5b505050565b6101e2336102b4565b610233576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b604080516001815290517f0e8fe5b3baccd13c21d6a20906753a2bbcd86f70d69f4bde83f4e38cf3aae12b9181900360200190a1565b6033546001600160a01b031690565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156101d4573d6000803e3d6000fd5b60345490565b60006102c160345461033f565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b505192915050565b6033546000906001600160a01b031661039f576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156103eb57600080fd5b505afa1580156103ff573d6000803e3d6000fd5b505050506040513d602081101561041557600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561030d57600080fdfea2646970667358221220259def7a8363f7486ea160a0c1e624439b03b0651b2f5fb80016285131b8190e64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/oracle.go b/pkg/bindings/oracle.go index f0d4ffd3..eba3ce26 100644 --- a/pkg/bindings/oracle.go +++ b/pkg/bindings/oracle.go @@ -31,7 +31,7 @@ var ( const OracleABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"}],\"name\":\"SetCryptoComparePublicKey\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_result\",\"type\":\"string\"}],\"name\":\"VerifiedProof\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_result\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"UpdateTokenRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cryptoCompareAPIPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"}],\"name\":\"updateCryptoCompareAPIPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // OracleBin is the compiled bytecode used for deploying new contracts. -var OracleBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b506040516200322f3803806200322f83398181016040526060811015620000a057600080fd5b5080516020820151604090920151909190620000bc836200010c565b620000c782620001e3565b620000d28162000299565b604051806060016040528060408152602001620031ef604091398051620001029160369160209091019062000355565b50505050620003f1565b600054610100900460ff1680620001285750620001286200034f565b8062000137575060005460ff16155b620001745760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff16158015620001a0576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001cc57603380546001600160a01b0319166001600160a01b0384161790555b8015620001df576000805461ff00191690555b5050565b600054610100900460ff1680620001ff5750620001ff6200034f565b806200020e575060005460ff16155b6200024b5760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff1615801562000277576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760348290558015620001df576000805461ff00191690555050565b600054610100900460ff1680620002b55750620002b56200034f565b80620002c4575060005460ff16155b620003015760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff161580156200032d576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760358290558015620001df576000805461ff00191690555050565b303b1590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039857805160ff1916838001178555620003c8565b82800160010185558215620003c8579182015b82811115620003c8578251825591602001919060010190620003ab565b50620003d6929150620003da565b5090565b5b80821115620003d65760008155600101620003db565b612dc080620004016000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630cb2a6bd146100675780633acbe96e146101375780637d73b231146101b4578063877337b0146101d8578063c2c3d054146101f2578063e2b4ce9714610260575b600080fd5b6101356004803603606081101561007d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156100a757600080fd5b8201836020820111156100b957600080fd5b803590602001918460018302840111600160201b831117156100da57600080fd5b919390929091602081019035600160201b8111156100f757600080fd5b82018360208201111561010957600080fd5b803590602001918460018302840111600160201b8311171561012a57600080fd5b509092509050610268565b005b61013f610441565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610179578181015183820152602001610161565b50505050905090810190601f1680156101a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101bc6104cf565b604080516001600160a01b039092168252519081900360200190f35b6101e06104de565b60408051918252519081900360200190f35b6101356004803603602081101561020857600080fd5b810190602081018135600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460018302840111600160201b8311171561025557600080fd5b5090925090506104e4565b6101e06105b6565b600080610274876105bc565b965050509450505050816102cf576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e206d75737420626520617661696c61626c65000000000000000000604482015290519081900360640190fd5b6000806103d188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250506036805460408051602060026000196101006001871615020190941693909304601f810184900484028201840190925281815294509192508301828280156103c65780601f1061039b576101008083540402835291602001916103c6565b820191906000526020600020905b8154815290600101906020018083116103a957829003601f168201915b505050505086610745565b909250905081156104365760006104256104208a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c6692505050565b610eff565b9050816104338b8383610f12565b50505b505050505050505050565b6036805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b820191906000526020600020905b8154815290600101906020018083116104aa57829003601f168201915b505050505081565b6033546001600160a01b031690565b60355490565b6104ed33610f98565b610534576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61054060368383612bfd565b507fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa33838360405180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b60345490565b60606000806000806000806105d2603554611023565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561065b57600080fd5b8101908080516040519392919084600160201b82111561067a57600080fd5b90830190602082018581111561068f57600080fd5b8251600160201b8111828201881017156106a857600080fd5b82525081516020918201929091019080838360005b838110156106d55781810151838201526020016106bd565b50505050905090810190601f1680156107025780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610795576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b6041856001815181106107a457fe5b016020015160f81c146107fe576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b6040805160418082526080820190925260609160208201818036833701905050905061082e818760026041611144565b85516060908790604490811061084057fe5b0160200151875160f89190911c90610100908990604390811061085f57fe5b016020015160f81c0201146108b4576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b60408051606080825260808201909252816020820181803683370190505090506108e2818860456060611144565b6108ed818388611161565b610932576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6040805160148082528183019092526060916020820181803683370190505090506109618183600b6014611144565b60008061096e838961121a565b9092509050816109b4576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c80825260608281019093526020820181803683370190505090506109e281866034602c611144565b6109eb81611578565b8051906020012060028d6040516020018082805190602001908083835b60208310610a275780518252601f199092019160209182019101610a08565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a8a5780518252601f199092019160209182019101610a6b565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610ac9573d6000803e3d6000fd5b5050506040513d6020811015610ade57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014610b53576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610bb7578181015183820152602001610b9f565b50505050905090810190601f168015610be45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c17578181015183820152602001610bff565b50505050905090810190601f168015610c445780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b60208310610c9d5780518252601f199092019160209182019101610c7e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052519050600881118015610ce55750601c8111155b610d2b576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b604080516007808252818301909252606091602082018180368337019050509050610dc081856040516020018082805190602001908083835b60208310610d835780518252601f199092019160209182019101610d64565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007611144565b805160208201207f7a2d79c44ec25893f1deb7192af566af2e14c179cce8e62e025bd750d6e078e214610e2c576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b610e34612c7b565b610e3d85611bbc565b9050610e6b610e64604051806040016040528060018152602001601d60f91b815250611bbc565b8290611be1565b5080600001519250610e9f610e98604051806040016040528060018152602001607d60f81b815250611bbc565b8290611bfb565b508051600019840114610eeb576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b610ef481611c59565b93505050505b919050565b6000610f0c826012611cc0565b92915050565b610f1d603554611023565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b50505050505050565b6000610fa5603454611023565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d602081101561101b57600080fd5b505192915050565b6033546000906001600160a01b0316611083576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d60208110156110f957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610ff157600080fd5b60208481019084840101611159828285612535565b505050505050565b60008060006002866040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156111d7573d6000803e3d6000fd5b5050506040513d60208110156111ec57600080fd5b505190506111fa8186612573565b845160208601206001600160a01b03918216911614925050509392505050565b600080836040516020018082805190602001908083835b602083106112505780518252601f199092019160209182019101611231565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461128e57fe5b611296612c7b565b61129f85611bbc565b90506112a9612c7b565b6112cb604051806040016040528060018152602001601d60f91b815250611bbc565b90506112d5612c7b565b6112f7604051806040016040528060018152602001600160fd1b815250611bbc565b9050600061131561131061130b8685611be1565b611c59565b6126fc565b90506000811180156113275750602081105b611364576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061137b61137661130b8786611be1565b612709565b60ff1690506000811180156113905750600d81105b6113cf576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b60006113e161131061130b8887611be1565b90506107e1811180156113f55750610bb881105b611433576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b600061144561131061130b8989611be1565b905060198110611489576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b600061149b61131061130b8a8a611be1565b9050603c81106114e1576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006114f361131061130b8b8b611be1565b9050603c8110611539576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b6402540be4009093026305f5e10090940293909301620f4240909402939093016127109093029290920160649091020101958611979596505050505050565b606060008060008060008651905060608167ffffffffffffffff8111801561159f57600080fd5b506040519080825280601f01601f1916602001820160405280156115ca576020820181803683370190505b509050600080831180156115df575060048306155b611630576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f1689600285038151811061166057fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156116a257600283039250611710565b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f168960018503815181106116d257fe5b01602090810151604080516001600160f81b031990921682840152805180830360010181526021909201905280519101201415611710576001830392505b600319831660005b8181101561192e576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061174a57fe5b0160200151815160f89190911c90811061176057fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061179757fe5b0160200151815160f89190911c9081106117ad57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106117e457fe5b0160200151815160f89190911c9081106117fa57fe5b602001015160f81c60f81b96506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061183157fe5b0160200151815160f89190911c90811061184757fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061188657fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b0319169186919081106118d157fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061191257fe5b60200101906001600160f81b031916908160001a905350611718565b81850360021415611a26576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061196357fe5b0160200151815160f89190911c90811061197957fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106119b057fe5b0160200151815160f89190911c9081106119c657fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b16848480600101955081518110611a0a57fe5b60200101906001600160f81b031916908160001a905350611bad565b81850360031415611bad576040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611a5b57fe5b0160200151815160f89190911c908110611a7157fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611aa857fe5b0160200151815160f89190911c908110611abe57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611af557fe5b0160200151815160f89190911c908110611b0b57fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c16179092169186918110611b4a57fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110611b9557fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b611bc4612c7b565b506040805180820190915281518152602082810190820152919050565b611be9612c7b565b611bf4838383612a15565b5092915050565b611c03612c7b565b815183511015611c14575081610f0c565b8151835160208086015190850151910191909103906001908214611c42575082516020840151819020908220145b8015611c5057835185510385525b50929392505050565b606080826000015167ffffffffffffffff81118015611c7757600080fd5b506040519080825280601f01601f191660200182016040528015611ca2576020820181803683370190505b5090506000602082019050611bf48185602001518660000151612535565b60008281808080808080808080805b8b518110156122de578b51600360fc1b908d9083908110611cec57fe5b01602001516001600160f81b03191610801590611d2a57508b51603960f81b908d9083908110611d1857fe5b01602001516001600160f81b03191611155b8015611d34575083155b15611dcc578415611d8657611d4a8a600a612a86565b9950611d79603060f81b60f81c8d8381518110611d6357fe5b01602001518c9160f89190911c0360ff16612ae6565b9950600190970196611dc7565b60019550611d958b600a612a86565b9a50611dc4603060f81b60f81c8d8381518110611dae57fe5b01602001518d9160f89190911c0360ff16612ae6565b9a505b6122d6565b8b51600360fc1b908d9083908110611de057fe5b01602001516001600160f81b03191610801590611e1e57508b51603960f81b908d9083908110611e0c57fe5b01602001516001600160f81b03191611155b8015611e275750835b15611e6d57611e3789600a612a86565b9850611e66603060f81b60f81c8d8381518110611e5057fe5b01602001518b9160f89190911c0360ff16612ae6565b98506122d6565b8b51601760f91b908d9083908110611e8157fe5b01602001516001600160f81b0319161415611f885785611ee0576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415611f33576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315611f7f576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b600194506122d6565b8b51602d60f81b908d9083908110611f9c57fe5b01602001516001600160f81b0319161415612092578215611ff2576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612032576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612089576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600192506122d6565b8b51602b60f81b908d90839081106120a657fe5b01602001516001600160f81b031916141561219c5781156120fc576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b821561213c576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612193576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600191506122d6565b8b51604560f81b908d90839081106121b057fe5b01602001516001600160f81b03191614806121eb57508b51606560f81b908d90839081106121da57fe5b01602001516001600160f81b031916145b15612299578561223a576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b831561228d576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b600193508096506122d6565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101611ccf565b82806122e75750815b15612300578660020181116122fb57600080fd5b612315565b83156123155786600101811161231557600080fd5b8215612396578d891061238c57604e8e8a0310612369576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161237757fe5b049c50610f0c9b505050505050505050505050565b888e039d506123a3565b6123a08e8a612ae6565b9d505b878e1061246b57604e88106123e95760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6123f78b600a8a900a612a86565b9a506124038b8b612ae6565b9a50604e888f031061244c576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b612464888f03600a0a8c612a8690919063ffffffff16565b9a50612522565b8d88039750604e88106124af5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b87600a0a8a816124bb57fe5b049950604e8e106124fd5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6125138e600a0a8c612a8690919063ffffffff16565b9a5061251f8b8b612ae6565b9a505b50989d9c50505050505050505050505050565b5b60208110612555578151835260209283019290910190601f1901612536565b905182516020929092036101000a6000190180199091169116179052565b600081516041146125cb576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a601b81148015906125f257508060ff16601c14155b1561262e5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ccd6022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561268a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166126f2576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b6000610f0c826000611cc0565b600080826040516020018082805190602001908083835b6020831061273f5780518252601f199092019160209182019101612720565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f4a18c9083b936e0757952a5d9d34b5575d427661506fbe9908c2a1da3f3e80d98114156127ae576001915050610efa565b7f78ec83563b948f0ac242d7eaefd592adf65964e11cc27f11ae41faa99a1e990a8114156127e0576002915050610efa565b7f2bab7d3f253ae0e3722abcc2571faced288946968116996ffc3de31fb7348ec3811415612812576003915050610efa565b7fc6f33aba2381b69f05afc78835e501547a9daffa08d674623068c378423ac188811415612844576004915050610efa565b7fdb5ee1006003349b29eda5be5fe34f728659f836a948d4ec595114aebbb159d3811415612876576005915050610efa565b7f44a0046ab54c1458fc3c39dfcadc52509ad809730ec301470d2d747dbe77242d8114156128a8576006915050610efa565b7f74d9e46f10329e61dc333ff1800274be516163110de31961b4e0c61de3e90c5c8114156128da576007915050610efa565b7fed40c08ab6f3d9c5d71155e25b1271d5b9eca8c27bf89e1d2293fcb77c5abf6481141561290c576008915050610efa565b7f7d801199c77197eb9933a633741db90c2c6f3d7d14aca35f5f80a41b4a8863ac81141561293e576009915050610efa565b7fb7841ed82fc96483f061ddc0b19846855df22558c4aea3b3b058ce0d9f1f516481141561297057600a915050610efa565b7f487851233e540dddea8f904d6802590aead5463b1c44965d68348bb7def25cf48114156129a257600b915050610efa565b7f3bd971d8758c58fe0c4d635451404450c5edda87d624a89819e0be5a122933dc8114156129d457600c915050610efa565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b612a1d612c7b565b6000612a3b8560000151866020015186600001518760200151612b40565b60208087018051918601919091528051820385528651905191925001811415612a675760008552612a7d565b8351835186519101900385528351810160208601525b50909392505050565b600082612a9557506000610f0c565b82820282848281612aa257fe5b0414612adf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d6a6021913960400191505060405180910390fd5b9392505050565b600082820183811015612adf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008381868511612bee5760208511612bb35783518251600019600860208990030260020a011991821690888a018890039083165b828114612ba557818610612b93578a8a019650505050505050612bf5565b50600190940180519094908316612b75565b859650505050505050612bf5565b508383206000905b8588038211612bec5785832081811415612bdb5783945050505050612bf5565b506001928301929190910190612bbb565b505b5050508284015b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c3e5782800160ff19823516178555612c6b565b82800160010185558215612c6b579182015b82811115612c6b578235825591602001919060010190612c50565b50612c77929150612c95565b5090565b604051806040016040528060008152602001600081525090565b5b80821115612c775760008155600101612c9656fe6d6f7265207468616e20373720646563696d616c206469676974732070617273656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d35ffff3eb2118e46a775b8e7b6f9a6e471056c1f12247d8a85462b6e4ce351a64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca" +var OracleBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966035553480156200007a57600080fd5b506040516200322f3803806200322f83398181016040526060811015620000a057600080fd5b5080516020820151604090920151909190620000bc836200010c565b620000c782620001e3565b620000d28162000299565b604051806060016040528060408152602001620031ef604091398051620001029160369160209091019062000355565b50505050620003f1565b600054610100900460ff1680620001285750620001286200034f565b8062000137575060005460ff16155b620001745760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff16158015620001a0576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615620001cc57603380546001600160a01b0319166001600160a01b0384161790555b8015620001df576000805461ff00191690555b5050565b600054610100900460ff1680620001ff5750620001ff6200034f565b806200020e575060005460ff16155b6200024b5760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff1615801562000277576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760348290558015620001df576000805461ff00191690555050565b600054610100900460ff1680620002b55750620002b56200034f565b80620002c4575060005460ff16155b620003015760405162461bcd60e51b815260040180806020018281038252602e815260200180620031c1602e913960400191505060405180910390fd5b600054610100900460ff161580156200032d576000805460ff1961ff0019909116610100171660011790555b8115620001cc5760358290558015620001df576000805461ff00191690555050565b303b1590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200039857805160ff1916838001178555620003c8565b82800160010185558215620003c8579182015b82811115620003c8578251825591602001919060010190620003ab565b50620003d6929150620003da565b5090565b5b80821115620003d65760008155600101620003db565b612dc080620004016000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630cb2a6bd146100675780633acbe96e146101375780637d73b231146101b4578063877337b0146101d8578063c2c3d054146101f2578063e2b4ce9714610260575b600080fd5b6101356004803603606081101561007d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156100a757600080fd5b8201836020820111156100b957600080fd5b803590602001918460018302840111600160201b831117156100da57600080fd5b919390929091602081019035600160201b8111156100f757600080fd5b82018360208201111561010957600080fd5b803590602001918460018302840111600160201b8311171561012a57600080fd5b509092509050610268565b005b61013f610441565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610179578181015183820152602001610161565b50505050905090810190601f1680156101a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101bc6104cf565b604080516001600160a01b039092168252519081900360200190f35b6101e06104de565b60408051918252519081900360200190f35b6101356004803603602081101561020857600080fd5b810190602081018135600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460018302840111600160201b8311171561025557600080fd5b5090925090506104e4565b6101e06105b6565b600080610274876105bc565b965050509450505050816102cf576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e206d75737420626520617661696c61626c65000000000000000000604482015290519081900360640190fd5b6000806103d188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250506036805460408051602060026000196101006001871615020190941693909304601f810184900484028201840190925281815294509192508301828280156103c65780601f1061039b576101008083540402835291602001916103c6565b820191906000526020600020905b8154815290600101906020018083116103a957829003601f168201915b505050505086610745565b909250905081156104365760006104256104208a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c6692505050565b610eff565b9050816104338b8383610f12565b50505b505050505050505050565b6036805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b820191906000526020600020905b8154815290600101906020018083116104aa57829003601f168201915b505050505081565b6033546001600160a01b031690565b60355490565b6104ed33610f98565b610534576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61054060368383612bfd565b507fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa33838360405180846001600160a01b03168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b60345490565b60606000806000806000806105d2603554611023565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561065b57600080fd5b8101908080516040519392919084600160201b82111561067a57600080fd5b90830190602082018581111561068f57600080fd5b8251600160201b8111828201881017156106a857600080fd5b82525081516020918201929091019080838360005b838110156106d55781810151838201526020016106bd565b50505050905090810190601f1680156107025780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610795576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b6041856001815181106107a457fe5b016020015160f81c146107fe576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b6040805160418082526080820190925260609160208201818036833701905050905061082e818760026041611144565b85516060908790604490811061084057fe5b0160200151875160f89190911c90610100908990604390811061085f57fe5b016020015160f81c0201146108b4576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b60408051606080825260808201909252816020820181803683370190505090506108e2818860456060611144565b6108ed818388611161565b610932576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b6040805160148082528183019092526060916020820181803683370190505090506109618183600b6014611144565b60008061096e838961121a565b9092509050816109b4576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c80825260608281019093526020820181803683370190505090506109e281866034602c611144565b6109eb81611578565b8051906020012060028d6040516020018082805190602001908083835b60208310610a275780518252601f199092019160209182019101610a08565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a8a5780518252601f199092019160209182019101610a6b565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015610ac9573d6000803e3d6000fd5b5050506040513d6020811015610ade57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014610b53576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610bb7578181015183820152602001610b9f565b50505050905090810190601f168015610be45780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c17578181015183820152602001610bff565b50505050905090810190601f168015610c445780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b60208310610c9d5780518252601f199092019160209182019101610c7e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052519050600881118015610ce55750601c8111155b610d2b576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b604080516007808252818301909252606091602082018180368337019050509050610dc081856040516020018082805190602001908083835b60208310610d835780518252601f199092019160209182019101610d64565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007611144565b805160208201207f7a2d79c44ec25893f1deb7192af566af2e14c179cce8e62e025bd750d6e078e214610e2c576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b610e34612c7b565b610e3d85611bbc565b9050610e6b610e64604051806040016040528060018152602001601d60f91b815250611bbc565b8290611be1565b5080600001519250610e9f610e98604051806040016040528060018152602001607d60f81b815250611bbc565b8290611bfb565b508051600019840114610eeb576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b610ef481611c59565b93505050505b919050565b6000610f0c826012611cc0565b92915050565b610f1d603554611023565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b50505050505050565b6000610fa5603454611023565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ff157600080fd5b505afa158015611005573d6000803e3d6000fd5b505050506040513d602081101561101b57600080fd5b505192915050565b6033546000906001600160a01b0316611083576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d60208110156110f957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610ff157600080fd5b60208481019084840101611159828285612535565b505050505050565b60008060006002866040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156111d7573d6000803e3d6000fd5b5050506040513d60208110156111ec57600080fd5b505190506111fa8186612573565b845160208601206001600160a01b03918216911614925050509392505050565b600080836040516020018082805190602001908083835b602083106112505780518252601f199092019160209182019101611231565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461128e57fe5b611296612c7b565b61129f85611bbc565b90506112a9612c7b565b6112cb604051806040016040528060018152602001601d60f91b815250611bbc565b90506112d5612c7b565b6112f7604051806040016040528060018152602001600160fd1b815250611bbc565b9050600061131561131061130b8685611be1565b611c59565b6126fc565b90506000811180156113275750602081105b611364576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061137b61137661130b8786611be1565b612709565b60ff1690506000811180156113905750600d81105b6113cf576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b60006113e161131061130b8887611be1565b90506107e1811180156113f55750610bb881105b611433576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b600061144561131061130b8989611be1565b905060198110611489576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b600061149b61131061130b8a8a611be1565b9050603c81106114e1576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006114f361131061130b8b8b611be1565b9050603c8110611539576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b6402540be4009093026305f5e10090940293909301620f4240909402939093016127109093029290920160649091020101958611979596505050505050565b606060008060008060008651905060608167ffffffffffffffff8111801561159f57600080fd5b506040519080825280601f01601f1916602001820160405280156115ca576020820181803683370190505b509050600080831180156115df575060048306155b611630576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f1689600285038151811061166057fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156116a257600283039250611710565b7ff30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f168960018503815181106116d257fe5b01602090810151604080516001600160f81b031990921682840152805180830360010181526021909201905280519101201415611710576001830392505b600319831660005b8181101561192e576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061174a57fe5b0160200151815160f89190911c90811061176057fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061179757fe5b0160200151815160f89190911c9081106117ad57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106117e457fe5b0160200151815160f89190911c9081106117fa57fe5b602001015160f81c60f81b96506040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061183157fe5b0160200151815160f89190911c90811061184757fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061188657fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b0319169186919081106118d157fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061191257fe5b60200101906001600160f81b031916908160001a905350611718565b81850360021415611a26576040518060a00160405280607b8152602001612cef607b91398b5160018301928d91811061196357fe5b0160200151815160f89190911c90811061197957fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d9181106119b057fe5b0160200151815160f89190911c9081106119c657fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b16848480600101955081518110611a0a57fe5b60200101906001600160f81b031916908160001a905350611bad565b81850360031415611bad576040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611a5b57fe5b0160200151815160f89190911c908110611a7157fe5b602001015160f81c60f81b98506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611aa857fe5b0160200151815160f89190911c908110611abe57fe5b602001015160f81c60f81b97506040518060a00160405280607b8152602001612cef607b91398b5160018301928d918110611af557fe5b0160200151815160f89190911c908110611b0b57fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c16179092169186918110611b4a57fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110611b9557fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b611bc4612c7b565b506040805180820190915281518152602082810190820152919050565b611be9612c7b565b611bf4838383612a15565b5092915050565b611c03612c7b565b815183511015611c14575081610f0c565b8151835160208086015190850151910191909103906001908214611c42575082516020840151819020908220145b8015611c5057835185510385525b50929392505050565b606080826000015167ffffffffffffffff81118015611c7757600080fd5b506040519080825280601f01601f191660200182016040528015611ca2576020820181803683370190505b5090506000602082019050611bf48185602001518660000151612535565b60008281808080808080808080805b8b518110156122de578b51600360fc1b908d9083908110611cec57fe5b01602001516001600160f81b03191610801590611d2a57508b51603960f81b908d9083908110611d1857fe5b01602001516001600160f81b03191611155b8015611d34575083155b15611dcc578415611d8657611d4a8a600a612a86565b9950611d79603060f81b60f81c8d8381518110611d6357fe5b01602001518c9160f89190911c0360ff16612ae6565b9950600190970196611dc7565b60019550611d958b600a612a86565b9a50611dc4603060f81b60f81c8d8381518110611dae57fe5b01602001518d9160f89190911c0360ff16612ae6565b9a505b6122d6565b8b51600360fc1b908d9083908110611de057fe5b01602001516001600160f81b03191610801590611e1e57508b51603960f81b908d9083908110611e0c57fe5b01602001516001600160f81b03191611155b8015611e275750835b15611e6d57611e3789600a612a86565b9850611e66603060f81b60f81c8d8381518110611e5057fe5b01602001518b9160f89190911c0360ff16612ae6565b98506122d6565b8b51601760f91b908d9083908110611e8157fe5b01602001516001600160f81b0319161415611f885785611ee0576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415611f33576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315611f7f576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b600194506122d6565b8b51602d60f81b908d9083908110611f9c57fe5b01602001516001600160f81b0319161415612092578215611ff2576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612032576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612089576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600192506122d6565b8b51602b60f81b908d90839081106120a657fe5b01602001516001600160f81b031916141561219c5781156120fc576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b821561213c576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612193576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b600191506122d6565b8b51604560f81b908d90839081106121b057fe5b01602001516001600160f81b03191614806121eb57508b51606560f81b908d90839081106121da57fe5b01602001516001600160f81b031916145b15612299578561223a576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b831561228d576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b600193508096506122d6565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101611ccf565b82806122e75750815b15612300578660020181116122fb57600080fd5b612315565b83156123155786600101811161231557600080fd5b8215612396578d891061238c57604e8e8a0310612369576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161237757fe5b049c50610f0c9b505050505050505050505050565b888e039d506123a3565b6123a08e8a612ae6565b9d505b878e1061246b57604e88106123e95760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6123f78b600a8a900a612a86565b9a506124038b8b612ae6565b9a50604e888f031061244c576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b612464888f03600a0a8c612a8690919063ffffffff16565b9a50612522565b8d88039750604e88106124af5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b87600a0a8a816124bb57fe5b049950604e8e106124fd5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cab6022913960400191505060405180910390fd5b6125138e600a0a8c612a8690919063ffffffff16565b9a5061251f8b8b612ae6565b9a505b50989d9c50505050505050505050505050565b5b60208110612555578151835260209283019290910190601f1901612536565b905182516020929092036101000a6000190180199091169116179052565b600081516041146125cb576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a601b81148015906125f257508060ff16601c14155b1561262e5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ccd6022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561268a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166126f2576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b6000610f0c826000611cc0565b600080826040516020018082805190602001908083835b6020831061273f5780518252601f199092019160209182019101612720565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f4a18c9083b936e0757952a5d9d34b5575d427661506fbe9908c2a1da3f3e80d98114156127ae576001915050610efa565b7f78ec83563b948f0ac242d7eaefd592adf65964e11cc27f11ae41faa99a1e990a8114156127e0576002915050610efa565b7f2bab7d3f253ae0e3722abcc2571faced288946968116996ffc3de31fb7348ec3811415612812576003915050610efa565b7fc6f33aba2381b69f05afc78835e501547a9daffa08d674623068c378423ac188811415612844576004915050610efa565b7fdb5ee1006003349b29eda5be5fe34f728659f836a948d4ec595114aebbb159d3811415612876576005915050610efa565b7f44a0046ab54c1458fc3c39dfcadc52509ad809730ec301470d2d747dbe77242d8114156128a8576006915050610efa565b7f74d9e46f10329e61dc333ff1800274be516163110de31961b4e0c61de3e90c5c8114156128da576007915050610efa565b7fed40c08ab6f3d9c5d71155e25b1271d5b9eca8c27bf89e1d2293fcb77c5abf6481141561290c576008915050610efa565b7f7d801199c77197eb9933a633741db90c2c6f3d7d14aca35f5f80a41b4a8863ac81141561293e576009915050610efa565b7fb7841ed82fc96483f061ddc0b19846855df22558c4aea3b3b058ce0d9f1f516481141561297057600a915050610efa565b7f487851233e540dddea8f904d6802590aead5463b1c44965d68348bb7def25cf48114156129a257600b915050610efa565b7f3bd971d8758c58fe0c4d635451404450c5edda87d624a89819e0be5a122933dc8114156129d457600c915050610efa565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b612a1d612c7b565b6000612a3b8560000151866020015186600001518760200151612b40565b60208087018051918601919091528051820385528651905191925001811415612a675760008552612a7d565b8351835186519101900385528351810160208601525b50909392505050565b600082612a9557506000610f0c565b82820282848281612aa257fe5b0414612adf5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d6a6021913960400191505060405180910390fd5b9392505050565b600082820183811015612adf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008381868511612bee5760208511612bb35783518251600019600860208990030260020a011991821690888a018890039083165b828114612ba557818610612b93578a8a019650505050505050612bf5565b50600190940180519094908316612b75565b859650505050505050612bf5565b508383206000905b8588038211612bec5785832081811415612bdb5783945050505050612bf5565b506001928301929190910190612bbb565b505b5050508284015b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c3e5782800160ff19823516178555612c6b565b82800160010185558215612c6b579182015b82811115612c6b578235825591602001919060010190612c50565b50612c77929150612c95565b5090565b604051806040016040528060008152602001600081525090565b5b80821115612c775760008155600101612c9656fe6d6f7265207468616e20373720646563696d616c206469676974732070617273656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212204447c158db41e83881e9b70c32e90caba67d982bb71908a77f1b3fa590f23a9564736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca" // DeployOracle deploys a new Ethereum contract, binding an instance of Oracle to it. func DeployOracle(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _tokenWhitelistNode_ [32]byte) (common.Address, *types.Transaction, *Oracle, error) { diff --git a/pkg/bindings/tokenWhitelist.go b/pkg/bindings/tokenWhitelist.go index f1c87a93..9b82fbd4 100644 --- a/pkg/bindings/tokenWhitelist.go +++ b/pkg/bindings/tokenWhitelist.go @@ -31,7 +31,7 @@ var ( const TokenWhitelistABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_oracleNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_stablecoinAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"AddedExclusiveMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"AddedMethodId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_magnitude\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"AddedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"RemovedExclusiveMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"RemovedMethodId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"RemovedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"}],\"name\":\"UpdatedTokenLoadable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"}],\"name\":\"UpdatedTokenRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"UpdatedTokenRedeemable\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_symbols\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_magnitude\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"_loadable\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"_redeemable\",\"type\":\"bool[]\"},{\"internalType\":\"uint256\",\"name\":\"_lastUpdate\",\"type\":\"uint256\"}],\"name\":\"addTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getERC20RecipientAndAmount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStablecoinInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"isERC20MethodSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"isERC20MethodWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracleNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemableCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeemableTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"}],\"name\":\"removeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"}],\"name\":\"setTokenLoadable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"setTokenRedeemable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stablecoin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_updateDate\",\"type\":\"uint256\"}],\"name\":\"updateTokenRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // TokenWhitelistBin is the compiled bytecode used for deploying new contracts. -var TokenWhitelistBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034553480156200005657600080fd5b506040516200281838038062002818833981810160405260808110156200007c57600080fd5b50805160208201516040830151606090930151919290916200009e8462000194565b620000a9826200026b565b603a9290925550603980546001600160a01b0319166001600160a01b039092169190911790555060366020527f36aaa0d2a881446a5d284caf55fe779596f3dd15619675545d6094c8909139c2805460ff1990811660019081179092557fbdd45af1473e0dd27b6e035ccafb153373c61968247ba4b7c0e6c1c96496792f80548216831790557f877171c55a6bbc4aa0ea34a24de07dd3c5952b4a7d66df2b953f79c7955a122780548216831790556323b872dd60e01b6000527f04324ec27bf37ba85969616ff61c6c0e3939d6b141697b749b0be22765b298708054909116909117905562000327565b600054610100900460ff1680620001b05750620001b062000321565b80620001bf575060005460ff16155b620001fc5760405162461bcd60e51b815260040180806020018281038252602e815260200180620027ea602e913960400191505060405180910390fd5b600054610100900460ff1615801562000228576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200025457603380546001600160a01b0319166001600160a01b0384161790555b801562000267576000805461ff00191690555b5050565b600054610100900460ff16806200028757506200028762000321565b8062000296575060005460ff16155b620002d35760405162461bcd60e51b815260040180806020018281038252602e815260200180620027ea602e913960400191505060405180910390fd5b600054610100900460ff16158015620002ff576000805460ff1961ff0019909116610100171660011790555b811562000254576034829055801562000267576000805461ff00191690555050565b303b1590565b6124b380620003376000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610582578063afc72e93146105b8578063d545782e14610659578063e2b4ce971461068b578063e9cbd8221461069357610116565b80636c3824ef146104ba5780637d73b2311461052857806380cc0dda1461054c578063872773061461055457610116565b80633efec5e9116100e95780633efec5e9146103ee578063443dd2a4146103f657806344b049bc1461044e5780635d793a7d146104565780636a1744dc1461048457610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc1461023e575b600080fd5b61012361069b565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a1565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c4565b6040518080602001888152602001878152602001861515815260200185151581526020018415158152602001838152602001828103825289818151815260200191508051906020019080838360005b838110156101fd5781810151838201526020016101e5565b50505050905090810190601f16801561022a5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ec600480360360c081101561025457600080fd5b810190602081018135600160201b81111561026e57600080fd5b82018360208201111561028057600080fd5b803590602001918460208302840111600160201b831117156102a157600080fd5b919390929091602081019035600160201b8111156102be57600080fd5b8201836020820111156102d057600080fd5b803590602001918460208302840111600160201b831117156102f157600080fd5b919390929091602081019035600160201b81111561030e57600080fd5b82018360208201111561032057600080fd5b803590602001918460208302840111600160201b8311171561034157600080fd5b919390929091602081019035600160201b81111561035e57600080fd5b82018360208201111561037057600080fd5b803590602001918460208302840111600160201b8311171561039157600080fd5b919390929091602081019035600160201b8111156103ae57600080fd5b8201836020820111156103c057600080fd5b803590602001918460208302840111600160201b831117156103e157600080fd5b9193509150356107c2565b005b610196610c35565b6103fe610d33565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043a578181015183820152602001610422565b505050509050019250505060405180910390f35b6103fe610d95565b6103ec6004803603604081101561046c57600080fd5b506001600160a01b0381351690602001351515610e7a565b61015c6004803603604081101561049a57600080fd5b5080356001600160a01b031690602001356001600160e01b031916611061565b6103ec600480360360208110156104d057600080fd5b810190602081018135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460208302840111600160201b8311171561051d57600080fd5b5090925090506110e8565b610530611395565b604080516001600160a01b039092168252519081900360200190f35b6101236113a4565b6103ec6004803603604081101561056a57600080fd5b506001600160a01b03813516906020013515156113aa565b6103ec6004803603606081101561059857600080fd5b506001600160a01b038135811691602081013590911690604001356114e3565b610636600480360360408110156105ce57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b50909250905061158d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ec6004803603606081101561066f57600080fd5b506001600160a01b0381351690602081013590604001356118ad565b6101236119f7565b6105306119fd565b60385490565b6001600160e01b0319811660009081526036602052604090205460ff165b919050565b6001600160a01b038116600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff8084169694840481169562010000909404169391929189918301828280156107a15780601f10610776576101008083540402835291602001916107a1565b820191906000526020600020905b81548152906001019060200180831161078457829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cb33611a0c565b610812576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b898814801561082057508986145b801561082b57508984145b801561083657508984145b610887576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c2757603560008d8d848181106108a257fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff161561091d576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b606061094261093d8c8c8581811061093157fe5b90506020020135611a97565b611ac3565b90506040518060e001604052808281526020018a8a8581811061096157fe5b9050602002013581526020016000815260200160011515815260200188888581811061098957fe5b905060200201351515151581526020018686858181106109a557fe5b9050602002013515151515815260200184815250603560008f8f868181106109c957fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a15929190612300565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c09091015160049091015560378d8d84818110610a8c57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad457fe5b9050602002013515610af257603854610aee906001611b31565b6038555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2057fe5b905060200201356001600160a01b0316838c8c87818110610b3d57fe5b905060200201358b8b88818110610b5057fe5b9050602002013515158a8a89818110610b6557fe5b90506020020135151560405180876001600160a01b03168152602001866001600160a01b031681526020018060200185815260200184151581526020018315158152602001828103825286818151815260200191508051906020019080838360005b83811015610bdf578181015183820152602001610bc7565b50505050905090810190601f168015610c0c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088a565b505050505050505050505050565b6039546001600160a01b0316600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff808416969484048116956201000090940416939192918991830182828015610d145780601f10610ce957610100808354040283529160200191610d14565b820191906000526020600020905b815481529060010190602001808311610cf757829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606037805480602002602001604051908101604052809291908181526020018280548015610d8b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d6d575b5050505050905090565b60608060385467ffffffffffffffff81118015610db157600080fd5b50604051908082528060200260200182016040528015610ddb578160200160208202803683370190505b5090506000805b603754811015610e7257600060378281548110610dfb57fe5b60009182526020808320909101546001600160a01b0316808352603590915260409091206003015490915060ff620100009091041615610e695780848481518110610e4257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de2565b509091505090565b610e8333611a0c565b610eca576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff16610f3a576040805162461bcd60e51b815260206004820152601f60248201527f72656465656d61626c653a20746f6b656e206e6f7420617661696c61626c6500604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff620100009091041615158115151415610fb8576040805162461bcd60e51b815260206004820152601b60248201527f72656465656d61626c653a206e6f207374617465206368616e67650000000000604482015290519081900360640190fd5b8015610fd457603854610fcc906001611b31565b603855610fe6565b603854610fe2906001611b92565b6038555b6001600160a01b038216600081815260356020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526035602052604081206003015460ff166110c6576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526036602052604090205460ff16919050565b6110f133611a0c565b611138576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b8181101561139057600083838381811061115157fe5b602090810292909201356001600160a01b0316600081815260359093526040909220600301549192505060ff166111c8576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526035602052604090206003015462010000900460ff161561120457603854611200906001611b92565b6038555b6001600160a01b038116600090815260356020526040812090611227828261237e565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b60375461125d906001611b92565b81101561131057816001600160a01b03166037828154811061127b57fe5b6000918252602090912001546001600160a01b0316141561130857603780546112a5906001611b92565b815481106112af57fe5b600091825260209091200154603780546001600160a01b0390921691839081106112d557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611310565b60010161124f565b50603780548061131c57fe5b6000828152602090819020820160001990810180546001600160a01b0319169055909101909155604080513381526001600160a01b0384169281019290925280517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad09281900390910190a15060010161113b565b505050565b6033546001600160a01b031690565b603a5490565b6113b333611a0c565b6113fa576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff1661146a576040805162461bcd60e51b815260206004820181905260248201527f6c6f616461626c653a20746f6b656e206973206e6f7420617661696c61626c65604482015290519081900360640190fd5b6001600160a01b0382166000818152603560209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114ec33611a0c565b611533576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61153e838383611bd4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b60008060248310156115e6576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061162c600086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c0e9050565b90506116388682611061565b61167e576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b14156116e657856116dc600487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b92509250506118a5565b6001600160e01b031981166323b872dd60e01b14156117dd576064841015611755576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b611799603086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc604487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b604484101561181d5760405162461bcd60e51b81526004018080602001828103825260258152602001806123f56025913960400191505060405180910390fd5b611861601086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc602487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b935093915050565b60006118ba603a54611d04565b90506118c533611a0c565b806118d85750336001600160a01b038216145b611922576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526035602052604090206003015460ff1661198b576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03841660008181526035602090815260409182902060028101879055600401859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60345490565b6039546001600160a01b031690565b6000611a19603454611d04565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a6557600080fd5b505afa158015611a79573d6000803e3d6000fd5b505050506040513d6020811015611a8f57600080fd5b505192915050565b611a9f6123c5565b6040516020810160405282815280602083015250611abc82611e25565b8152919050565b606080826000015167ffffffffffffffff81118015611ae157600080fd5b506040519080825280601f01601f191660200182016040528015611b0c576020820181803683370190505b5090506000602082019050611b2a8185602001518660000151611ebe565b5092915050565b600082820183811015611b8b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000611b8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611efc565b6001600160a01b038216611bfa57611bf56001600160a01b03841682611f93565b611390565b6113906001600160a01b0383168483612078565b6000611c1b826004611b31565b83511015611c67576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c75846020611b31565b90940151949350505050565b6000611c1b826020611b31565b6000611c9b826014611b31565b83511015611ce7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cf5846020611b31565b9094015160601c949350505050565b6033546000906001600160a01b0316611d64576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d6020811015611dda57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015611a6557600080fd5b60008082611e375760009150506106bf565b6fffffffffffffffffffffffffffffffff8316611e5b57601001600160801b830492505b67ffffffffffffffff8316611e7c5760080168010000000000000000830492505b63ffffffff8316611e9457600401600160201b830492505b61ffff8316611ea95760020162010000830492505b60ff8316611eb5576001015b60200392915050565b5b60208110611ede578151835260209283019290910190601f1901611ebf565b905182516020929092036101000a6000190180199091169116179052565b60008184841115611f8b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f50578181015183820152602001611f38565b50505050905090810190601f168015611f7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b80471015611fe8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114612033576040519150601f19603f3d011682016040523d82523d6000602084013e612038565b606091505b50509050806113905760405162461bcd60e51b815260040180806020018281038252603a81526020018061241a603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611390908490606061211a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121769092919063ffffffff16565b8051909150156113905780806020019051602081101561213957600080fd5b50516113905760405162461bcd60e51b815260040180806020018281038252602a815260200180612454602a913960400191505060405180910390fd5b6060612185848460008561218d565b949350505050565b6060612198856122fa565b6121e9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106122285780518252601f199092019160209182019101612209565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461228a576040519150601f19603f3d011682016040523d82523d6000602084013e61228f565b606091505b509150915081156122a35791506121859050565b8051156122b35780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611f50578181015183820152602001611f38565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234157805160ff191683800117855561236e565b8280016001018555821561236e579182015b8281111561236e578251825591602001919060010190612353565b5061237a9291506123df565b5090565b50805460018160011615610100020316600290046000825580601f106123a457506123c2565b601f0160209004906000526020600020908101906123c291906123df565b50565b604051806040016040528060008152602001600081525090565b5b8082111561237a57600081556001016123e056fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d617920686176652072657665727465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220daac22934635741668a025b4dcb08a026c7833a869b78ed0746aa49a9c3231b964736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var TokenWhitelistBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034553480156200005657600080fd5b506040516200281738038062002817833981810160405260808110156200007c57600080fd5b50805160208201516040830151606090930151919290916200009e8462000194565b620000a9826200026b565b603a9290925550603980546001600160a01b0319166001600160a01b039092169190911790555060366020527f36aaa0d2a881446a5d284caf55fe779596f3dd15619675545d6094c8909139c2805460ff1990811660019081179092557fbdd45af1473e0dd27b6e035ccafb153373c61968247ba4b7c0e6c1c96496792f80548216831790557f877171c55a6bbc4aa0ea34a24de07dd3c5952b4a7d66df2b953f79c7955a122780548216831790556323b872dd60e01b6000527f04324ec27bf37ba85969616ff61c6c0e3939d6b141697b749b0be22765b298708054909116909117905562000327565b600054610100900460ff1680620001b05750620001b062000321565b80620001bf575060005460ff16155b620001fc5760405162461bcd60e51b815260040180806020018281038252602e815260200180620027e9602e913960400191505060405180910390fd5b600054610100900460ff1615801562000228576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156200025457603380546001600160a01b0319166001600160a01b0384161790555b801562000267576000805461ff00191690555b5050565b600054610100900460ff16806200028757506200028762000321565b8062000296575060005460ff16155b620002d35760405162461bcd60e51b815260040180806020018281038252602e815260200180620027e9602e913960400191505060405180910390fd5b600054610100900460ff16158015620002ff576000805460ff1961ff0019909116610100171660011790555b811562000254576034829055801562000267576000805461ff00191690555050565b303b1590565b6124b280620003376000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610582578063afc72e93146105b8578063d545782e14610659578063e2b4ce971461068b578063e9cbd8221461069357610116565b80636c3824ef146104ba5780637d73b2311461052857806380cc0dda1461054c578063872773061461055457610116565b80633efec5e9116100e95780633efec5e9146103ee578063443dd2a4146103f657806344b049bc1461044e5780635d793a7d146104565780636a1744dc1461048457610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc1461023e575b600080fd5b61012361069b565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a1565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c4565b6040518080602001888152602001878152602001861515815260200185151581526020018415158152602001838152602001828103825289818151815260200191508051906020019080838360005b838110156101fd5781810151838201526020016101e5565b50505050905090810190601f16801561022a5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ec600480360360c081101561025457600080fd5b810190602081018135600160201b81111561026e57600080fd5b82018360208201111561028057600080fd5b803590602001918460208302840111600160201b831117156102a157600080fd5b919390929091602081019035600160201b8111156102be57600080fd5b8201836020820111156102d057600080fd5b803590602001918460208302840111600160201b831117156102f157600080fd5b919390929091602081019035600160201b81111561030e57600080fd5b82018360208201111561032057600080fd5b803590602001918460208302840111600160201b8311171561034157600080fd5b919390929091602081019035600160201b81111561035e57600080fd5b82018360208201111561037057600080fd5b803590602001918460208302840111600160201b8311171561039157600080fd5b919390929091602081019035600160201b8111156103ae57600080fd5b8201836020820111156103c057600080fd5b803590602001918460208302840111600160201b831117156103e157600080fd5b9193509150356107c2565b005b610196610c35565b6103fe610d33565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043a578181015183820152602001610422565b505050509050019250505060405180910390f35b6103fe610d95565b6103ec6004803603604081101561046c57600080fd5b506001600160a01b0381351690602001351515610e7a565b61015c6004803603604081101561049a57600080fd5b5080356001600160a01b031690602001356001600160e01b031916611061565b6103ec600480360360208110156104d057600080fd5b810190602081018135600160201b8111156104ea57600080fd5b8201836020820111156104fc57600080fd5b803590602001918460208302840111600160201b8311171561051d57600080fd5b5090925090506110e8565b610530611395565b604080516001600160a01b039092168252519081900360200190f35b6101236113a4565b6103ec6004803603604081101561056a57600080fd5b506001600160a01b03813516906020013515156113aa565b6103ec6004803603606081101561059857600080fd5b506001600160a01b038135811691602081013590911690604001356114e3565b610636600480360360408110156105ce57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105f857600080fd5b82018360208201111561060a57600080fd5b803590602001918460018302840111600160201b8311171561062b57600080fd5b50909250905061158d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ec6004803603606081101561066f57600080fd5b506001600160a01b0381351690602081013590604001356118ad565b6101236119f7565b6105306119fd565b60385490565b6001600160e01b0319811660009081526036602052604090205460ff165b919050565b6001600160a01b038116600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff8084169694840481169562010000909404169391929189918301828280156107a15780601f10610776576101008083540402835291602001916107a1565b820191906000526020600020905b81548152906001019060200180831161078457829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cb33611a0c565b610812576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b898814801561082057508986145b801561082b57508984145b801561083657508984145b610887576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c2757603560008d8d848181106108a257fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff161561091d576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b606061094261093d8c8c8581811061093157fe5b90506020020135611a97565b611ac3565b90506040518060e001604052808281526020018a8a8581811061096157fe5b9050602002013581526020016000815260200160011515815260200188888581811061098957fe5b905060200201351515151581526020018686858181106109a557fe5b9050602002013515151515815260200184815250603560008f8f868181106109c957fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a15929190612300565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c09091015160049091015560378d8d84818110610a8c57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad457fe5b9050602002013515610af257603854610aee906001611b31565b6038555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2057fe5b905060200201356001600160a01b0316838c8c87818110610b3d57fe5b905060200201358b8b88818110610b5057fe5b9050602002013515158a8a89818110610b6557fe5b90506020020135151560405180876001600160a01b03168152602001866001600160a01b031681526020018060200185815260200184151581526020018315158152602001828103825286818151815260200191508051906020019080838360005b83811015610bdf578181015183820152602001610bc7565b50505050905090810190601f168015610c0c5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088a565b505050505050505050505050565b6039546001600160a01b0316600090815260356020908152604080832060018082015460028084015460038501546004860154865488516101009782161588026000190190911694909404601f81018a90048a0285018a019098528784526060999889988998899889988998929788979196909560ff808416969484048116956201000090940416939192918991830182828015610d145780601f10610ce957610100808354040283529160200191610d14565b820191906000526020600020905b815481529060010190602001808311610cf757829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606037805480602002602001604051908101604052809291908181526020018280548015610d8b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d6d575b5050505050905090565b60608060385467ffffffffffffffff81118015610db157600080fd5b50604051908082528060200260200182016040528015610ddb578160200160208202803683370190505b5090506000805b603754811015610e7257600060378281548110610dfb57fe5b60009182526020808320909101546001600160a01b0316808352603590915260409091206003015490915060ff620100009091041615610e695780848481518110610e4257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de2565b509091505090565b610e8333611a0c565b610eca576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff16610f3a576040805162461bcd60e51b815260206004820152601f60248201527f72656465656d61626c653a20746f6b656e206e6f7420617661696c61626c6500604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff620100009091041615158115151415610fb8576040805162461bcd60e51b815260206004820152601b60248201527f72656465656d61626c653a206e6f207374617465206368616e67650000000000604482015290519081900360640190fd5b8015610fd457603854610fcc906001611b31565b603855610fe6565b603854610fe2906001611b92565b6038555b6001600160a01b038216600081815260356020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526035602052604081206003015460ff166110c6576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526036602052604090205460ff16919050565b6110f133611a0c565b611138576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b60005b8181101561139057600083838381811061115157fe5b602090810292909201356001600160a01b0316600081815260359093526040909220600301549192505060ff166111c8576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526035602052604090206003015462010000900460ff161561120457603854611200906001611b92565b6038555b6001600160a01b038116600090815260356020526040812090611227828261237e565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b60375461125d906001611b92565b81101561131057816001600160a01b03166037828154811061127b57fe5b6000918252602090912001546001600160a01b0316141561130857603780546112a5906001611b92565b815481106112af57fe5b600091825260209091200154603780546001600160a01b0390921691839081106112d557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611310565b60010161124f565b50603780548061131c57fe5b6000828152602090819020820160001990810180546001600160a01b0319169055909101909155604080513381526001600160a01b0384169281019290925280517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad09281900390910190a15060010161113b565b505050565b6033546001600160a01b031690565b603a5490565b6113b333611a0c565b6113fa576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b6001600160a01b03821660009081526035602052604090206003015460ff1661146a576040805162461bcd60e51b815260206004820181905260248201527f6c6f616461626c653a20746f6b656e206973206e6f7420617661696c61626c65604482015290519081900360640190fd5b6001600160a01b0382166000818152603560209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114ec33611a0c565b611533576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61153e838383611bd4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b60008060248310156115e6576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061162c600086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c0e9050565b90506116388682611061565b61167e576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b14156116e657856116dc600487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b92509250506118a5565b6001600160e01b031981166323b872dd60e01b14156117dd576064841015611755576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b611799603086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc604487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b604484101561181d5760405162461bcd60e51b815260040180806020018281038252602481526020018061242f6024913960400191505060405180910390fd5b611861601086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c8e9050565b6116dc602487878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050611c819050565b935093915050565b60006118ba603a54611d04565b90506118c533611a0c565b806118d85750336001600160a01b038216145b611922576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526035602052604090206003015460ff1661198b576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03841660008181526035602090815260409182902060028101879055600401859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60345490565b6039546001600160a01b031690565b6000611a19603454611d04565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611a6557600080fd5b505afa158015611a79573d6000803e3d6000fd5b505050506040513d6020811015611a8f57600080fd5b505192915050565b611a9f6123c5565b6040516020810160405282815280602083015250611abc82611e25565b8152919050565b606080826000015167ffffffffffffffff81118015611ae157600080fd5b506040519080825280601f01601f191660200182016040528015611b0c576020820181803683370190505b5090506000602082019050611b2a8185602001518660000151611ebe565b5092915050565b600082820183811015611b8b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000611b8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611efc565b6001600160a01b038216611bfa57611bf56001600160a01b03841682611f93565b611390565b6113906001600160a01b0383168483612078565b6000611c1b826004611b31565b83511015611c67576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c75846020611b31565b90940151949350505050565b6000611c1b826020611b31565b6000611c9b826014611b31565b83511015611ce7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cf5846020611b31565b9094015160601c949350505050565b6033546000906001600160a01b0316611d64576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611db057600080fd5b505afa158015611dc4573d6000803e3d6000fd5b505050506040513d6020811015611dda57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015611a6557600080fd5b60008082611e375760009150506106bf565b6fffffffffffffffffffffffffffffffff8316611e5b57601001600160801b830492505b67ffffffffffffffff8316611e7c5760080168010000000000000000830492505b63ffffffff8316611e9457600401600160201b830492505b61ffff8316611ea95760020162010000830492505b60ff8316611eb5576001015b60200392915050565b5b60208110611ede578151835260209283019290910190601f1901611ebf565b905182516020929092036101000a6000190180199091169116179052565b60008184841115611f8b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f50578181015183820152602001611f38565b50505050905090810190601f168015611f7d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b80471015611fe8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114612033576040519150601f19603f3d011682016040523d82523d6000602084013e612038565b606091505b50509050806113905760405162461bcd60e51b815260040180806020018281038252603a8152602001806123f5603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611390908490606061211a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121769092919063ffffffff16565b8051909150156113905780806020019051602081101561213957600080fd5b50516113905760405162461bcd60e51b815260040180806020018281038252602a815260200180612453602a913960400191505060405180910390fd5b6060612185848460008561218d565b949350505050565b6060612198856122fa565b6121e9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106122285780518252601f199092019160209182019101612209565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461228a576040519150601f19603f3d011682016040523d82523d6000602084013e61228f565b606091505b509150915081156122a35791506121859050565b8051156122b35780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611f50578181015183820152602001611f38565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061234157805160ff191683800117855561236e565b8280016001018555821561236e579182015b8281111561236e578251825591602001919060010190612353565b5061237a9291506123df565b5090565b50805460018160011615610100020316600290046000825580601f106123a457506123c2565b601f0160209004906000526020600020908101906123c291906123df565b50565b604051806040016040528060008152602001600081525090565b5b8082111561237a57600081556001016123e056fe416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d617920686176652072657665727465646e6f7420656e6f756768206461746120666f72207472616e736665722f617070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212207d4c667b89d2402925968fe6cd1e0f847a8292e041a0098516939d2f20dccdf964736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployTokenWhitelist deploys a new Ethereum contract, binding an instance of TokenWhitelist to it. func DeployTokenWhitelist(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _oracleNode_ [32]byte, _controllerNode_ [32]byte, _stablecoinAddress_ common.Address) (common.Address, *types.Transaction, *TokenWhitelist, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index e7c95782..b3617e00 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_privileged\",\"type\":\"bool\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"SetMonolith2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"SetPersonal2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executePrivilegedRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"monolith2FA\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"personal2FA\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"privileged\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setMonolith2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"setPersonal2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b50615a27806200008a6000396000f3fe6080604052600436106102ae5760003560e01c80637b580e7511610175578063cbd2ac68116100dc578063d251fefc11610095578063e61c51ca1161006f578063e61c51ca14610eae578063f36febda14610ed8578063f421764814610f11578063f8b2cb4f14610f8c576102ae565b8063d251fefc14610e5a578063de212bf314610e84578063e2b4ce9714610e99576102ae565b8063cbd2ac6814610d19578063cccdc55614610d43578063cd7958dd14610d58578063ce0b5bd514610e06578063ced99cce14610e30578063cf0a866b14610e45576102ae565b8063aaf1fc621161012e578063aaf1fc6214610aee578063ad95580b14610b9f578063b242e53414610bb4578063be40ba7914610bef578063beabacc814610c04578063c1e559a314610c47576102ae565b80637b580e75146109ec5780637d73b23114610a1f5780637fd004fa14610a34578063877337b014610aaf5780638da5cb5b14610ac457806390e690c714610ad9576102ae565b8063458d07f2116102195780635adc02ab116101d25780635adc02ab146108985780636137d670146108c257806369efdfc01461093d5780636c37a7e614610998578063715018a6146109c2578063747c31d6146109d7576102ae565b8063458d07f21461072c57806345b12efc1461075657806346efe0ed1461076b57806347b55a9d1461083d57806347d125af146108525780634d9aa24814610883576102ae565b806326d05ab21161026b57806326d05ab214610566578063294f40251461057b57806332531c3c146105e05780633a43199f146106135780633b8252fa1461063f5780633f579f4214610666576102ae565b806301ffc9a7146102b3578063100f23fd146102fb5780631127b57e146103275780631626ba7e146103b157806320c13b0b146104865780632121dc7514610551575b600080fd5b3480156102bf57600080fd5b506102e7600480360360208110156102d657600080fd5b50356001600160e01b031916610fbf565b604080519115158252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b5035610fd9565b005b34801561033357600080fd5b5061033c611179565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561037657818101518382015260200161035e565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103bd57600080fd5b50610469600480360360408110156103d457600080fd5b81359190810190604081016020820135600160201b8111156103f557600080fd5b82018360208201111561040757600080fd5b803590602001918460018302840111600160201b8311171561042857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061119a945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561049257600080fd5b50610469600480360360408110156104a957600080fd5b810190602081018135600160201b8111156104c357600080fd5b8201836020820111156104d557600080fd5b803590602001918460018302840111600160201b831117156104f657600080fd5b919390929091602081019035600160201b81111561051357600080fd5b82018360208201111561052557600080fd5b803590602001918460018302840111600160201b8311171561054657600080fd5b509092509050611209565b34801561055d57600080fd5b506102e76112e0565b34801561057257600080fd5b506102e76112f1565b34801561058757600080fd5b506105906112fa565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105cc5781810151838201526020016105b4565b505050509050019250505060405180910390f35b3480156105ec57600080fd5b506102e76004803603602081101561060357600080fd5b50356001600160a01b031661135c565b6103256004803603604081101561062957600080fd5b506001600160a01b038135169060200135611371565b34801561064b57600080fd5b50610654611590565b60408051918252519081900360200190f35b34801561067257600080fd5b5061033c6004803603606081101561068957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156106b857600080fd5b8201836020820111156106ca57600080fd5b803590602001918460018302840111600160201b831117156106eb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611596945050505050565b34801561073857600080fd5b506103256004803603602081101561074f57600080fd5b5035611aac565b34801561076257600080fd5b50610654611b93565b34801561077757600080fd5b506103256004803603606081101561078e57600080fd5b81359190810190604081016020820135600160201b8111156107af57600080fd5b8201836020820111156107c157600080fd5b803590602001918460018302840111600160201b831117156107e257600080fd5b919390929091602081019035600160201b8111156107ff57600080fd5b82018360208201111561081157600080fd5b803590602001918460018302840111600160201b8311171561083257600080fd5b509092509050611bb1565b34801561084957600080fd5b50610590611c21565b34801561085e57600080fd5b50610867611c81565b604080516001600160a01b039092168252519081900360200190f35b34801561088f57600080fd5b50610654611c90565b3480156108a457600080fd5b50610325600480360360208110156108bb57600080fd5b5035611c96565b3480156108ce57600080fd5b50610325600480360360208110156108e557600080fd5b810190602081018135600160201b8111156108ff57600080fd5b82018360208201111561091157600080fd5b803590602001918460208302840111600160201b8311171561093257600080fd5b509092509050611fbd565b34801561094957600080fd5b50610325600480360360e081101561096057600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356121e4565b3480156109a457600080fd5b50610325600480360360208110156109bb57600080fd5b50356122c0565b3480156109ce57600080fd5b50610325612434565b3480156109e357600080fd5b5061065461252f565b3480156109f857600080fd5b5061032560048036036020811015610a0f57600080fd5b50356001600160a01b0316612535565b348015610a2b57600080fd5b50610867612700565b348015610a4057600080fd5b5061032560048036036020811015610a5757600080fd5b810190602081018135600160201b811115610a7157600080fd5b820183602082011115610a8357600080fd5b803590602001918460208302840111600160201b83111715610aa457600080fd5b50909250905061270f565b348015610abb57600080fd5b50610654612a52565b348015610ad057600080fd5b50610867612a58565b348015610ae557600080fd5b50610325612a67565b348015610afa57600080fd5b5061032560048036036020811015610b1157600080fd5b810190602081018135600160201b811115610b2b57600080fd5b820183602082011115610b3d57600080fd5b803590602001918460018302840111600160201b83111715610b5e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612ac1945050505050565b348015610bab57600080fd5b50610325612be8565b348015610bc057600080fd5b5061032560048036036040811015610bd757600080fd5b506001600160a01b0381351690602001351515612cef565b348015610bfb57600080fd5b506102e7612ea6565b348015610c1057600080fd5b5061032560048036036060811015610c2757600080fd5b506001600160a01b03813581169160208101359091169060400135612eb5565b348015610c5357600080fd5b5061032560048036036060811015610c6a57600080fd5b81359190810190604081016020820135600160201b811115610c8b57600080fd5b820183602082011115610c9d57600080fd5b803590602001918460018302840111600160201b83111715610cbe57600080fd5b919390929091602081019035600160201b811115610cdb57600080fd5b820183602082011115610ced57600080fd5b803590602001918460018302840111600160201b83111715610d0e57600080fd5b509092509050613041565b348015610d2557600080fd5b5061032560048036036020811015610d3c57600080fd5b50356130f8565b348015610d4f57600080fd5b506106546134df565b348015610d6457600080fd5b5061065460048036036020811015610d7b57600080fd5b810190602081018135600160201b811115610d9557600080fd5b820183602082011115610da757600080fd5b803590602001918460208302840111600160201b83111715610dc857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506134e5945050505050565b348015610e1257600080fd5b5061032560048036036020811015610e2957600080fd5b503561353f565b348015610e3c57600080fd5b506102e76136e3565b348015610e5157600080fd5b506102e76136f3565b348015610e6657600080fd5b5061086760048036036020811015610e7d57600080fd5b5035613703565b348015610e9057600080fd5b506102e761372a565b348015610ea557600080fd5b50610654613738565b348015610eba57600080fd5b5061032560048036036020811015610ed157600080fd5b503561373e565b348015610ee457600080fd5b5061065460048036036040811015610efb57600080fd5b506001600160a01b0381351690602001356138c8565b348015610f1d57600080fd5b5061032560048036036020811015610f3457600080fd5b810190602081018135600160201b811115610f4e57600080fd5b820183602082011115610f6057600080fd5b803590602001918460208302840111600160201b83111715610f8157600080fd5b509092509050613a3f565b348015610f9857600080fd5b5061065460048036036020811015610faf57600080fd5b50356001600160a01b0316613d92565b6001600160e01b031981166301ffc9a760e01b145b919050565b610fe233613d9d565b80610ff15750610ff133613db1565b611036576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16611085576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6110e860398054806020026020016040519081016040528092919081815260200182805480156110de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c0575b50505050506134e5565b81146111255760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b6111316039600061571a565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806111a78484613ded565b90506111b281613d9d565b6111f7576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611280945086935089915088908190840183828082843760009201919091525061119a92505050565b6001600160e01b031916146112cc576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561135257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611334575b5050505050905090565b60376020526000908152604090205460ff1681565b61137a33613d9d565b8061138457503330145b6113c9576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6113d282613fd8565b611418576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061142483836138c8565b905061142f81613ff2565b600061143c60425461408e565b90506001600160a01b038416156114d5576114616001600160a01b03851682856141e1565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156114b857600080fd5b505af11580156114cc573d6000803e3d6000fd5b50505050611546565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561152c57600080fd5b505af1158015611540573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b60606115a133613d9d565b806115b057506115b033613db1565b6115f5576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff161580156116285750603554600160a81b900460ff16155b1561164757600061163a6000856138c8565b905061164581613ff2565b505b611659846001600160a01b03166142f9565b80156116695750611669846142ff565b156118515760008061167b8685614319565b6001600160a01b038216600090815260376020526040902054919350915060ff161580156116b35750603554600160a81b900460ff16155b156116d15760006116c487836138c8565b90506116cf81613ff2565b505b6116e46001600160a01b0387168561441a565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061171757fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156117a9578181015183820152602001611791565b50505050905090810190601f1680156117d65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156118095781810151838201526020016117f1565b50505050905090810190601f1680156118365780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611aa5915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106118905780518252601f199092019160209182019101611871565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50915091508181906119875760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561194c578181015183820152602001611934565b50505050905090810190601f1680156119795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611a035781810151838201526020016119eb565b50505050905090810190601f168015611a305780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a63578181015183820152602001611a4b565b50505050905090810190601f168015611a905780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b611ab533613d9d565b80611abf57503330145b611b04576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611b5c57603e54811015611b4e57603e81905560408054815183815260208101919091528151600080516020615896833981519152929181900390910190a15b611b57816144cb565b611b90565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611ba85750603d546112ee565b50603e546112ee565b611bba3361450e565b611c0b576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b611c1a85858585856000614567565b5050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611352576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611334575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160b01b900460ff1615611cf557611cb13361450e565b611cf0576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b611d3e565b6036546001600160a01b03163314611d3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b603b5460ff16611d8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611dee60398054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b8114611e2b5760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b60005b603954811015611f12576037600060398381548110611e4957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611f0a5760016037600060398481548110611e8857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603980546038919083908110611ece57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611e2e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b03168152602001806020018281038252838181548152602001915080548015611f9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f77575b5050935050505060405180910390a1611fb06039600061571a565b50603b805460ff19169055565b611fc633613d9d565b80611fd057503330145b612015576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156120305750603b54610100900460ff16155b612081576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166120da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061211e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61212a603a8383615738565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d19285928592612199928591859182918501908490808284376000920191909152506134e592505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806121fd57506121fd6147af565b8061220b575060005460ff16155b6122465760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015612271576000805460ff1961ff0019909116610100171660011790555b6122796147b5565b61228286614869565b61228b84614937565b61229588886149e4565b61229f8286614b43565b604283905580156122b6576000805461ff00191690555b5050505050505050565b603554600160b01b900460ff161561231f576122db3361450e565b61231a576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b612368565b6036546001600160a01b031633146123685760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b80603f54146123a85760405162461bcd60e51b81526004018080602001828103825260258152602001806159276025913960400191505060405180910390fd5b603d5481116123e85760405162461bcd60e51b81526004018080602001828103825260288152602001806157d06028913960400191505060405180910390fd5b603e8190556123fa4262015180614ca5565b6040818155603e548151908152602081019290925280516000805160206158968339815191529281900390910190a1611b90603f546144cb565b61243d33613d9d565b612484576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166124e2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61253e33613d9d565b612585576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6001600160a01b0381166125e0576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612639576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b038116301415612697576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60b01b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61271833613d9d565b8061272257503330145b612767576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156127825750603b54610100900460ff16155b6127d3576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156128ef5761282c82828151811061281f57fe5b6020026020010151613d9d565b15612877576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061288e57fe5b60200260200101516001600160a01b031614156128e7576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612807565b50603b5462010000900460ff16612949576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8161298d576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61299960398484615738565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612a06928591859182918501908490808284376000920191909152506134e592505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612a7033613d9d565b612ab7576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612abf614cff565b565b612aca33613d9d565b80612ad95750612ad933613db1565b612b1e576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156122b657612b41866054614d47565b888601805160148201516034909201805193995060609190911c96509094509092509050612b7a6054612b748785614ca5565b90614ca5565b945086851115612bc1576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612bd757506040805160208101909152600081525b612be2848483611596565b50612b2e565b612bf133613d9d565b612c38576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160b01b900460ff1615612c97576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60b01b1916600160b01b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612cf833613d9d565b612d3f576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612d9d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612de25760405162461bcd60e51b815260040180806020018281038252602381526020018061594c6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612e3b57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b612ebe33613d9d565b80612ec857503330145b612f0d576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080612f4a576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612f95576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff16158015612fc85750603554600160a81b900460ff16155b15612fe6576000612fd984846138c8565b9050612fe481613ff2565b505b612ff1848484614d89565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160b01b900460ff16156130a05761305c3361450e565b61309b576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b6130e9565b6036546001600160a01b031633146130e95760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b611c1a85858585856001614567565b603554600160b01b900460ff1615613157576131133361450e565b613152576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b6131a0565b6036546001600160a01b031633146131a05760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b603b54610100900460ff166131f4576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613255603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b81146132925760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b60005b603a548110156134335760376000603a83815481106132b057fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561342b57600060376000603a84815481106132f057fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603854613334906001614d47565b8110156133fc57603a828154811061334857fe5b600091825260209091200154603880546001600160a01b03909216918390811061336e57fe5b6000918252602090912001546001600160a01b031614156133f45760388054600019810190811061339b57fe5b600091825260209091200154603880546001600160a01b0390921691839081106133c157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506133fc565b600101613326565b50603880548061340857fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101613295565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156134b657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613498575b5050935050505060405180910390a16134d1603a600061571a565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b83811015613518578181015183820152602001613500565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61354833613d9d565b80613557575061355733613db1565b61359c576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff166135f0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613651603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b811461368e5760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b61369a603a600061571a565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b603554600160b01b900460ff1681565b6038818154811061371057fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b808061377b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b61378433613d9d565b80613793575061379333613db1565b6137d8576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b814711613825576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61382e82613ff2565b613836612a58565b6001600160a01b03166108fc839081150290604051600060405180830381858888f1935050505015801561386e573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613899612a58565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b60006138d2614dc3565b6001600160a01b0316836001600160a01b031614156138f2575080611203565b816001600160a01b0384161561398157600080600061391087614e39565b505050935093509350508061392c576000945050505050611203565b81613967576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b61397b836139758885614fc2565b9061501b565b93505050505b600080600061398e61505d565b50505093509350935050806139e0576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613a26576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613a34826139758686614fc2565b979650505050505050565b613a4833613d9d565b80613a5257503330145b613a97576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613ba657613ae382828151811061281f57fe5b15613b2e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613b4557fe5b60200260200101516001600160a01b03161415613b9e576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613acb565b50603b5462010000900460ff1615613bfd576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613cee5760376000858584818110613c1857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613ce657600160376000868685818110613c5457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613ca957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613c00565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613d7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613d60575b5050935050505060405180910390a1505050565b6000611203826151cc565b6035546001600160a01b0390811691161490565b603554600090600160b01b900460ff1615613dd657613dcf8261450e565b9050610fd4565b506036546001600160a01b03828116911614610fd4565b60008151604114613e45576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613eb65760405162461bcd60e51b81526004018080602001828103825260228152602001806158746022913960400191505060405180910390fd5b8060ff16601b14158015613ece57508060ff16601c14155b15613f0a5760405162461bcd60e51b81526004018080602001828103825260228152602001806158b66022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613f66573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613fce576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613fe483614e39565b509098975050505050505050565b613ffa61525d565b80603e541015614051576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e5461405e9082614d47565b603e819055604080548151928352602083015280516000805160206158968339815191529281900390910190a150565b6033546000906001600160a01b03166140ee576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561413a57600080fd5b505afa15801561414e573d6000803e3d6000fd5b505050506040513d602081101561416457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156141af57600080fd5b505afa1580156141c3573d6000803e3d6000fd5b505050506040513d60208110156141d957600080fd5b505192915050565b801580614267575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561423957600080fd5b505afa15801561424d573d6000803e3d6000fd5b505050506040513d602081101561426357600080fd5b5051155b6142a25760405162461bcd60e51b81526004018080602001828103825260368152602001806159bc6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142f490849061441a565b505050565b3b151590565b60008061430b83614e39565b509198975050505050505050565b600080614327603c5461408e565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561439257818101518382015260200161437a565b50505050905090810190601f1680156143bf5780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156143dc57600080fd5b505afa1580156143f0573d6000803e3d6000fd5b505050506040513d604081101561440657600080fd5b508051602090910151909590945092505050565b606061446f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166152aa9092919063ffffffff16565b8051909150156142f45780806020019051602081101561448e57600080fd5b50516142f45760405162461bcd60e51b815260040180806020018281038252602a81526020018061596f602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b600061451b60345461408e565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156141af57600080fd5b600046905060006145de82308a8a8a60405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b81526014018481526020018383808284378083019250505095505050505050604051602081830303815290604052805190602001206152b9565b9050631626ba7e60e01b6001600160e01b0319166146328287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119a92505050565b6001600160e01b0319161461467e576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b60415488146146c0576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b6146c8614cff565b6035805460ff60a81b1916600160a81b85151502179055604080516020601f890181900481028201810190925287815261471c918990899081908401838280828437600092019190915250612ac192505050565b6035805460ff60a81b191690556040805184151591810191909152606080825281018790527f7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec908890889086908060208101608082018686808284376000838201819052601f909101601f1916909201948503909252835250506040805191829003019350915050a15050505050505050565b303b1590565b600054610100900460ff16806147ce57506147ce6147af565b806147dc575060005460ff16155b6148175760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614842576000805460ff1961ff0019909116610100171660011790555b6035805460ff60b01b1916600160b01b1790558015611b90576000805461ff001916905550565b600054610100900460ff168061488257506148826147af565b80614890575060005460ff16155b6148cb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff161580156148f6576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561492157603380546001600160a01b0319166001600160a01b0384161790555b8015614933576000805461ff00191690555b5050565b600054610100900460ff168061495057506149506147af565b8061495e575060005460ff16155b6149995760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff161580156149c4576000805460ff1961ff0019909116610100171660011790555b81156149215760348290558015614933576000805461ff00191690555050565b600054610100900460ff16806149fd57506149fd6147af565b80614a0b575060005460ff16155b614a465760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614a71576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614ae957604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a180156142f4576000805461ff0019169055505050565b600054610100900460ff1680614b5c5750614b5c6147af565b80614b6a575060005460ff16155b614ba55760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614bd0576000805460ff1961ff0019909116610100171660011790555b614bd98261530a565b6000614be361505d565b505050505091505060008111614c30576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614c4f4262015180614ca5565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a1505080156142f4576000805461ff0019169055505050565b600082820183811015611aa5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b6000611aa583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506153b7565b6001600160a01b038216614daf57614daa6001600160a01b03841682615411565b6142f4565b6142f46001600160a01b03831684836154f6565b6000614dd0603c5461408e565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614e0857600080fd5b505afa158015614e1c573d6000803e3d6000fd5b505050506040513d6020811015614e3257600080fd5b5051905090565b6060600080600080600080614e4f603c5461408e565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614e9b57600080fd5b505afa158015614eaf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614ed857600080fd5b8101908080516040519392919084600160201b821115614ef757600080fd5b908301906020820185811115614f0c57600080fd5b8251600160201b811182820188101715614f2557600080fd5b82525081516020918201929091019080838360005b83811015614f52578181015183820152602001614f3a565b50505050905090810190601f168015614f7f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614fd157506000611203565b82820282848281614fde57fe5b0414611aa55760405162461bcd60e51b81526004018080602001828103825260218152602001806158d86021913960400191505060405180910390fd5b6000611aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615548565b6060600080600080600080615073603c5461408e565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150ab57600080fd5b505afa1580156150bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156150e857600080fd5b8101908080516040519392919084600160201b82111561510757600080fd5b90830190602082018581111561511c57600080fd5b8251600160201b81118282018810171561513557600080fd5b82525081516020918201929091019080838360005b8381101561516257818101518382015260200161514a565b50505050905090810190601f16801561518f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561525657604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561522357600080fd5b505afa158015615237573d6000803e3d6000fd5b505050506040513d602081101561524d57600080fd5b50519050610fd4565b5047610fd4565b604054421115612abf576152744262015180614ca5565b6040818155603d54603e8190558151908152602081019290925280516000805160206158968339815191529281900390910190a1565b60606112d884846000856155ad565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600054610100900460ff168061532357506153236147af565b80615331575060005460ff16155b61536c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015615397576000805460ff1961ff0019909116610100171660011790555b811561492157603c8290558015614933576000805461ff00191690555050565b600081848411156154095760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b505050900390565b80471015615466576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146154b1576040519150601f19603f3d011682016040523d82523d6000602084013e6154b6565b606091505b50509050806142f45760405162461bcd60e51b815260040180806020018281038252603a81526020018061583a603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526142f490849061441a565b600081836155975760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b5060008385816155a357fe5b0495945050505050565b60606155b8856142f9565b615609576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106156485780518252601f199092019160209182019101615629565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146156aa576040519150601f19603f3d011682016040523d82523d6000602084013e6156af565b606091505b509150915081156156c35791506112d89050565b8051156156d35780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561194c578181015183820152602001611934565b5080546000825590600052602060002090810190611b90919061579b565b82805482825590600052602060002090810192821561578b579160200282015b8281111561578b5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615758565b506157979291506157b0565b5090565b5b80821115615797576000815560010161579c565b5b808211156157975780546001600160a01b03191681556001016157b156fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f742061204d6f6e6f6c697468203246410000000073656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220d269eb71247e2e375bb65e1da9e815f146e7370aefb0c697c6031b80071c787464736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b50615a27806200008a6000396000f3fe6080604052600436106102ae5760003560e01c80637b580e7511610175578063cbd2ac68116100dc578063d251fefc11610095578063e61c51ca1161006f578063e61c51ca14610eae578063f36febda14610ed8578063f421764814610f11578063f8b2cb4f14610f8c576102ae565b8063d251fefc14610e5a578063de212bf314610e84578063e2b4ce9714610e99576102ae565b8063cbd2ac6814610d19578063cccdc55614610d43578063cd7958dd14610d58578063ce0b5bd514610e06578063ced99cce14610e30578063cf0a866b14610e45576102ae565b8063aaf1fc621161012e578063aaf1fc6214610aee578063ad95580b14610b9f578063b242e53414610bb4578063be40ba7914610bef578063beabacc814610c04578063c1e559a314610c47576102ae565b80637b580e75146109ec5780637d73b23114610a1f5780637fd004fa14610a34578063877337b014610aaf5780638da5cb5b14610ac457806390e690c714610ad9576102ae565b8063458d07f2116102195780635adc02ab116101d25780635adc02ab146108985780636137d670146108c257806369efdfc01461093d5780636c37a7e614610998578063715018a6146109c2578063747c31d6146109d7576102ae565b8063458d07f21461072c57806345b12efc1461075657806346efe0ed1461076b57806347b55a9d1461083d57806347d125af146108525780634d9aa24814610883576102ae565b806326d05ab21161026b57806326d05ab214610566578063294f40251461057b57806332531c3c146105e05780633a43199f146106135780633b8252fa1461063f5780633f579f4214610666576102ae565b806301ffc9a7146102b3578063100f23fd146102fb5780631127b57e146103275780631626ba7e146103b157806320c13b0b146104865780632121dc7514610551575b600080fd5b3480156102bf57600080fd5b506102e7600480360360208110156102d657600080fd5b50356001600160e01b031916610fbf565b604080519115158252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b5035610fd9565b005b34801561033357600080fd5b5061033c611179565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561037657818101518382015260200161035e565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103bd57600080fd5b50610469600480360360408110156103d457600080fd5b81359190810190604081016020820135600160201b8111156103f557600080fd5b82018360208201111561040757600080fd5b803590602001918460018302840111600160201b8311171561042857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061119a945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561049257600080fd5b50610469600480360360408110156104a957600080fd5b810190602081018135600160201b8111156104c357600080fd5b8201836020820111156104d557600080fd5b803590602001918460018302840111600160201b831117156104f657600080fd5b919390929091602081019035600160201b81111561051357600080fd5b82018360208201111561052557600080fd5b803590602001918460018302840111600160201b8311171561054657600080fd5b509092509050611209565b34801561055d57600080fd5b506102e76112e0565b34801561057257600080fd5b506102e76112f1565b34801561058757600080fd5b506105906112fa565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105cc5781810151838201526020016105b4565b505050509050019250505060405180910390f35b3480156105ec57600080fd5b506102e76004803603602081101561060357600080fd5b50356001600160a01b031661135c565b6103256004803603604081101561062957600080fd5b506001600160a01b038135169060200135611371565b34801561064b57600080fd5b50610654611590565b60408051918252519081900360200190f35b34801561067257600080fd5b5061033c6004803603606081101561068957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156106b857600080fd5b8201836020820111156106ca57600080fd5b803590602001918460018302840111600160201b831117156106eb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611596945050505050565b34801561073857600080fd5b506103256004803603602081101561074f57600080fd5b5035611aac565b34801561076257600080fd5b50610654611b93565b34801561077757600080fd5b506103256004803603606081101561078e57600080fd5b81359190810190604081016020820135600160201b8111156107af57600080fd5b8201836020820111156107c157600080fd5b803590602001918460018302840111600160201b831117156107e257600080fd5b919390929091602081019035600160201b8111156107ff57600080fd5b82018360208201111561081157600080fd5b803590602001918460018302840111600160201b8311171561083257600080fd5b509092509050611bb1565b34801561084957600080fd5b50610590611c21565b34801561085e57600080fd5b50610867611c81565b604080516001600160a01b039092168252519081900360200190f35b34801561088f57600080fd5b50610654611c90565b3480156108a457600080fd5b50610325600480360360208110156108bb57600080fd5b5035611c96565b3480156108ce57600080fd5b50610325600480360360208110156108e557600080fd5b810190602081018135600160201b8111156108ff57600080fd5b82018360208201111561091157600080fd5b803590602001918460208302840111600160201b8311171561093257600080fd5b509092509050611fbd565b34801561094957600080fd5b50610325600480360360e081101561096057600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356121e4565b3480156109a457600080fd5b50610325600480360360208110156109bb57600080fd5b50356122c0565b3480156109ce57600080fd5b50610325612434565b3480156109e357600080fd5b5061065461252f565b3480156109f857600080fd5b5061032560048036036020811015610a0f57600080fd5b50356001600160a01b0316612535565b348015610a2b57600080fd5b50610867612700565b348015610a4057600080fd5b5061032560048036036020811015610a5757600080fd5b810190602081018135600160201b811115610a7157600080fd5b820183602082011115610a8357600080fd5b803590602001918460208302840111600160201b83111715610aa457600080fd5b50909250905061270f565b348015610abb57600080fd5b50610654612a52565b348015610ad057600080fd5b50610867612a58565b348015610ae557600080fd5b50610325612a67565b348015610afa57600080fd5b5061032560048036036020811015610b1157600080fd5b810190602081018135600160201b811115610b2b57600080fd5b820183602082011115610b3d57600080fd5b803590602001918460018302840111600160201b83111715610b5e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612ac1945050505050565b348015610bab57600080fd5b50610325612be8565b348015610bc057600080fd5b5061032560048036036040811015610bd757600080fd5b506001600160a01b0381351690602001351515612cef565b348015610bfb57600080fd5b506102e7612ea6565b348015610c1057600080fd5b5061032560048036036060811015610c2757600080fd5b506001600160a01b03813581169160208101359091169060400135612eb5565b348015610c5357600080fd5b5061032560048036036060811015610c6a57600080fd5b81359190810190604081016020820135600160201b811115610c8b57600080fd5b820183602082011115610c9d57600080fd5b803590602001918460018302840111600160201b83111715610cbe57600080fd5b919390929091602081019035600160201b811115610cdb57600080fd5b820183602082011115610ced57600080fd5b803590602001918460018302840111600160201b83111715610d0e57600080fd5b509092509050613041565b348015610d2557600080fd5b5061032560048036036020811015610d3c57600080fd5b50356130f8565b348015610d4f57600080fd5b506106546134df565b348015610d6457600080fd5b5061065460048036036020811015610d7b57600080fd5b810190602081018135600160201b811115610d9557600080fd5b820183602082011115610da757600080fd5b803590602001918460208302840111600160201b83111715610dc857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506134e5945050505050565b348015610e1257600080fd5b5061032560048036036020811015610e2957600080fd5b503561353f565b348015610e3c57600080fd5b506102e76136e3565b348015610e5157600080fd5b506102e76136f3565b348015610e6657600080fd5b5061086760048036036020811015610e7d57600080fd5b5035613703565b348015610e9057600080fd5b506102e761372a565b348015610ea557600080fd5b50610654613738565b348015610eba57600080fd5b5061032560048036036020811015610ed157600080fd5b503561373e565b348015610ee457600080fd5b5061065460048036036040811015610efb57600080fd5b506001600160a01b0381351690602001356138c8565b348015610f1d57600080fd5b5061032560048036036020811015610f3457600080fd5b810190602081018135600160201b811115610f4e57600080fd5b820183602082011115610f6057600080fd5b803590602001918460208302840111600160201b83111715610f8157600080fd5b509092509050613a3f565b348015610f9857600080fd5b5061065460048036036020811015610faf57600080fd5b50356001600160a01b0316613d92565b6001600160e01b031981166301ffc9a760e01b145b919050565b610fe233613d9d565b80610ff15750610ff133613db1565b611036576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16611085576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6110e860398054806020026020016040519081016040528092919081815260200182805480156110de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c0575b50505050506134e5565b81146111255760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b6111316039600061571a565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806111a78484613ded565b90506111b281613d9d565b6111f7576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611280945086935089915088908190840183828082843760009201919091525061119a92505050565b6001600160e01b031916146112cc576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561135257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611334575b5050505050905090565b60376020526000908152604090205460ff1681565b61137a33613d9d565b8061138457503330145b6113c9576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6113d282613fd8565b611418576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061142483836138c8565b905061142f81613ff2565b600061143c60425461408e565b90506001600160a01b038416156114d5576114616001600160a01b03851682856141e1565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156114b857600080fd5b505af11580156114cc573d6000803e3d6000fd5b50505050611546565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561152c57600080fd5b505af1158015611540573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b60606115a133613d9d565b806115b057506115b033613db1565b6115f5576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff161580156116285750603554600160a81b900460ff16155b1561164757600061163a6000856138c8565b905061164581613ff2565b505b611659846001600160a01b03166142f9565b80156116695750611669846142ff565b156118515760008061167b8685614319565b6001600160a01b038216600090815260376020526040902054919350915060ff161580156116b35750603554600160a81b900460ff16155b156116d15760006116c487836138c8565b90506116cf81613ff2565b505b6116e46001600160a01b0387168561441a565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061171757fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156117a9578181015183820152602001611791565b50505050905090810190601f1680156117d65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156118095781810151838201526020016117f1565b50505050905090810190601f1680156118365780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611aa5915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106118905780518252601f199092019160209182019101611871565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50915091508181906119875760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561194c578181015183820152602001611934565b50505050905090810190601f1680156119795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611a035781810151838201526020016119eb565b50505050905090810190601f168015611a305780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a63578181015183820152602001611a4b565b50505050905090810190601f168015611a905780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b611ab533613d9d565b80611abf57503330145b611b04576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611b5c57603e54811015611b4e57603e81905560408054815183815260208101919091528151600080516020615896833981519152929181900390910190a15b611b57816144cb565b611b90565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611ba85750603d546112ee565b50603e546112ee565b611bba3361450e565b611c0b576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b611c1a85858585856000614567565b5050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611352576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611334575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160b01b900460ff1615611cf557611cb13361450e565b611cf0576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b611d3e565b6036546001600160a01b03163314611d3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b603b5460ff16611d8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611dee60398054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b8114611e2b5760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b60005b603954811015611f12576037600060398381548110611e4957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611f0a5760016037600060398481548110611e8857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603980546038919083908110611ece57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611e2e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b03168152602001806020018281038252838181548152602001915080548015611f9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f77575b5050935050505060405180910390a1611fb06039600061571a565b50603b805460ff19169055565b611fc633613d9d565b80611fd057503330145b612015576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156120305750603b54610100900460ff16155b612081576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c697374207375626d697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166120da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061211e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61212a603a8383615738565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d19285928592612199928591859182918501908490808284376000920191909152506134e592505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806121fd57506121fd6147af565b8061220b575060005460ff16155b6122465760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015612271576000805460ff1961ff0019909116610100171660011790555b6122796147b5565b61228286614869565b61228b84614937565b61229588886149e4565b61229f8286614b43565b604283905580156122b6576000805461ff00191690555b5050505050505050565b603554600160b01b900460ff161561231f576122db3361450e565b61231a576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b612368565b6036546001600160a01b031633146123685760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b80603f54146123a85760405162461bcd60e51b81526004018080602001828103825260258152602001806159276025913960400191505060405180910390fd5b603d5481116123e85760405162461bcd60e51b81526004018080602001828103825260288152602001806157d06028913960400191505060405180910390fd5b603e8190556123fa4262015180614ca5565b6040818155603e548151908152602081019290925280516000805160206158968339815191529281900390910190a1611b90603f546144cb565b61243d33613d9d565b612484576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166124e2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61253e33613d9d565b612585576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6001600160a01b0381166125e0576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612639576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b038116301415612697576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60b01b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61271833613d9d565b8061272257503330145b612767576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156127825750603b54610100900460ff16155b6127d3576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c697374207375626d697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156128ef5761282c82828151811061281f57fe5b6020026020010151613d9d565b15612877576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061288e57fe5b60200260200101516001600160a01b031614156128e7576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612807565b50603b5462010000900460ff16612949576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8161298d576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61299960398484615738565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612a06928591859182918501908490808284376000920191909152506134e592505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612a7033613d9d565b612ab7576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612abf614cff565b565b612aca33613d9d565b80612ad95750612ad933613db1565b612b1e576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156122b657612b41866054614d47565b888601805160148201516034909201805193995060609190911c96509094509092509050612b7a6054612b748785614ca5565b90614ca5565b945086851115612bc1576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612bd757506040805160208101909152600081525b612be2848483611596565b50612b2e565b612bf133613d9d565b612c38576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160b01b900460ff1615612c97576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60b01b1916600160b01b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612cf833613d9d565b612d3f576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612d9d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612de25760405162461bcd60e51b815260040180806020018281038252602381526020018061594c6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612e3b57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b612ebe33613d9d565b80612ec857503330145b612f0d576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080612f4a576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612f95576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff16158015612fc85750603554600160a81b900460ff16155b15612fe6576000612fd984846138c8565b9050612fe481613ff2565b505b612ff1848484614d89565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160b01b900460ff16156130a05761305c3361450e565b61309b576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b6130e9565b6036546001600160a01b031633146130e95760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b611c1a85858585856001614567565b603554600160b01b900460ff1615613157576131133361450e565b613152576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b6131a0565b6036546001600160a01b031633146131a05760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b603b54610100900460ff166131f4576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613255603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b81146132925760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b60005b603a548110156134335760376000603a83815481106132b057fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561342b57600060376000603a84815481106132f057fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603854613334906001614d47565b8110156133fc57603a828154811061334857fe5b600091825260209091200154603880546001600160a01b03909216918390811061336e57fe5b6000918252602090912001546001600160a01b031614156133f45760388054600019810190811061339b57fe5b600091825260209091200154603880546001600160a01b0390921691839081106133c157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506133fc565b600101613326565b50603880548061340857fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101613295565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156134b657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613498575b5050935050505060405180910390a16134d1603a600061571a565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b83811015613518578181015183820152602001613500565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61354833613d9d565b80613557575061355733613db1565b61359c576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff166135f0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613651603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b811461368e5760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b61369a603a600061571a565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b603554600160b01b900460ff1681565b6038818154811061371057fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b808061377b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b61378433613d9d565b80613793575061379333613db1565b6137d8576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b814711613825576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61382e82613ff2565b613836612a58565b6001600160a01b03166108fc839081150290604051600060405180830381858888f1935050505015801561386e573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613899612a58565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b60006138d2614dc3565b6001600160a01b0316836001600160a01b031614156138f2575080611203565b816001600160a01b0384161561398157600080600061391087614e39565b505050935093509350508061392c576000945050505050611203565b81613967576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b61397b836139758885614fc2565b9061501b565b93505050505b600080600061398e61505d565b50505093509350935050806139e0576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613a26576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613a34826139758686614fc2565b979650505050505050565b613a4833613d9d565b80613a5257503330145b613a97576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613ba657613ae382828151811061281f57fe5b15613b2e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613b4557fe5b60200260200101516001600160a01b03161415613b9e576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613acb565b50603b5462010000900460ff1615613bfd576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613cee5760376000858584818110613c1857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613ce657600160376000868685818110613c5457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613ca957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613c00565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613d7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613d60575b5050935050505060405180910390a1505050565b6000611203826151cc565b6035546001600160a01b0390811691161490565b603554600090600160b01b900460ff1615613dd657613dcf8261450e565b9050610fd4565b506036546001600160a01b03828116911614610fd4565b60008151604114613e45576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613eb65760405162461bcd60e51b81526004018080602001828103825260228152602001806158746022913960400191505060405180910390fd5b8060ff16601b14158015613ece57508060ff16601c14155b15613f0a5760405162461bcd60e51b81526004018080602001828103825260228152602001806158b66022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613f66573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613fce576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613fe483614e39565b509098975050505050505050565b613ffa61525d565b80603e541015614051576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e5461405e9082614d47565b603e819055604080548151928352602083015280516000805160206158968339815191529281900390910190a150565b6033546000906001600160a01b03166140ee576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561413a57600080fd5b505afa15801561414e573d6000803e3d6000fd5b505050506040513d602081101561416457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156141af57600080fd5b505afa1580156141c3573d6000803e3d6000fd5b505050506040513d60208110156141d957600080fd5b505192915050565b801580614267575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561423957600080fd5b505afa15801561424d573d6000803e3d6000fd5b505050506040513d602081101561426357600080fd5b5051155b6142a25760405162461bcd60e51b81526004018080602001828103825260368152602001806159bc6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142f490849061441a565b505050565b3b151590565b60008061430b83614e39565b509198975050505050505050565b600080614327603c5461408e565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561439257818101518382015260200161437a565b50505050905090810190601f1680156143bf5780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156143dc57600080fd5b505afa1580156143f0573d6000803e3d6000fd5b505050506040513d604081101561440657600080fd5b508051602090910151909590945092505050565b606061446f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166152aa9092919063ffffffff16565b8051909150156142f45780806020019051602081101561448e57600080fd5b50516142f45760405162461bcd60e51b815260040180806020018281038252602a81526020018061596f602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b600061451b60345461408e565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156141af57600080fd5b600046905060006145de82308a8a8a60405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b81526014018481526020018383808284378083019250505095505050505050604051602081830303815290604052805190602001206152b9565b9050631626ba7e60e01b6001600160e01b0319166146328287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119a92505050565b6001600160e01b0319161461467e576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b60415488146146c0576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b6146c8614cff565b6035805460ff60a81b1916600160a81b85151502179055604080516020601f890181900481028201810190925287815261471c918990899081908401838280828437600092019190915250612ac192505050565b6035805460ff60a81b191690556040805184151591810191909152606080825281018790527f7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec908890889086908060208101608082018686808284376000838201819052601f909101601f1916909201948503909252835250506040805191829003019350915050a15050505050505050565b303b1590565b600054610100900460ff16806147ce57506147ce6147af565b806147dc575060005460ff16155b6148175760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614842576000805460ff1961ff0019909116610100171660011790555b6035805460ff60b01b1916600160b01b1790558015611b90576000805461ff001916905550565b600054610100900460ff168061488257506148826147af565b80614890575060005460ff16155b6148cb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff161580156148f6576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561492157603380546001600160a01b0319166001600160a01b0384161790555b8015614933576000805461ff00191690555b5050565b600054610100900460ff168061495057506149506147af565b8061495e575060005460ff16155b6149995760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff161580156149c4576000805460ff1961ff0019909116610100171660011790555b81156149215760348290558015614933576000805461ff00191690555050565b600054610100900460ff16806149fd57506149fd6147af565b80614a0b575060005460ff16155b614a465760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614a71576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614ae957604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a180156142f4576000805461ff0019169055505050565b600054610100900460ff1680614b5c5750614b5c6147af565b80614b6a575060005460ff16155b614ba55760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614bd0576000805460ff1961ff0019909116610100171660011790555b614bd98261530a565b6000614be361505d565b505050505091505060008111614c30576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614c4f4262015180614ca5565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a1505080156142f4576000805461ff0019169055505050565b600082820183811015611aa5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b6000611aa583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506153b7565b6001600160a01b038216614daf57614daa6001600160a01b03841682615411565b6142f4565b6142f46001600160a01b03831684836154f6565b6000614dd0603c5461408e565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614e0857600080fd5b505afa158015614e1c573d6000803e3d6000fd5b505050506040513d6020811015614e3257600080fd5b5051905090565b6060600080600080600080614e4f603c5461408e565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614e9b57600080fd5b505afa158015614eaf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614ed857600080fd5b8101908080516040519392919084600160201b821115614ef757600080fd5b908301906020820185811115614f0c57600080fd5b8251600160201b811182820188101715614f2557600080fd5b82525081516020918201929091019080838360005b83811015614f52578181015183820152602001614f3a565b50505050905090810190601f168015614f7f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614fd157506000611203565b82820282848281614fde57fe5b0414611aa55760405162461bcd60e51b81526004018080602001828103825260218152602001806158d86021913960400191505060405180910390fd5b6000611aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615548565b6060600080600080600080615073603c5461408e565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150ab57600080fd5b505afa1580156150bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156150e857600080fd5b8101908080516040519392919084600160201b82111561510757600080fd5b90830190602082018581111561511c57600080fd5b8251600160201b81118282018810171561513557600080fd5b82525081516020918201929091019080838360005b8381101561516257818101518382015260200161514a565b50505050905090810190601f16801561518f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561525657604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561522357600080fd5b505afa158015615237573d6000803e3d6000fd5b505050506040513d602081101561524d57600080fd5b50519050610fd4565b5047610fd4565b604054421115612abf576152744262015180614ca5565b6040818155603d54603e8190558151908152602081019290925280516000805160206158968339815191529281900390910190a1565b60606112d884846000856155ad565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600054610100900460ff168061532357506153236147af565b80615331575060005460ff16155b61536c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015615397576000805460ff1961ff0019909116610100171660011790555b811561492157603c8290558015614933576000805461ff00191690555050565b600081848411156154095760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b505050900390565b80471015615466576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146154b1576040519150601f19603f3d011682016040523d82523d6000602084013e6154b6565b606091505b50509050806142f45760405162461bcd60e51b815260040180806020018281038252603a81526020018061583a603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526142f490849061441a565b600081836155975760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b5060008385816155a357fe5b0495945050505050565b60606155b8856142f9565b615609576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106156485780518252601f199092019160209182019101615629565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146156aa576040519150601f19603f3d011682016040523d82523d6000602084013e6156af565b606091505b509150915081156156c35791506112d89050565b8051156156d35780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561194c578181015183820152602001611934565b5080546000825590600052602060002090810190611b90919061579b565b82805482825590600052602060002090810192821561578b579160200282015b8281111561578b5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615758565b506157979291506157b0565b5090565b5b80821115615797576000815560010161579c565b5b808211156157975780546001600160a01b03191681556001016157b156fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f742061204d6f6e6f6c697468203246410000000073656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220e7c96d63fd860408376617582f91969f7703fe4b44eeb94558e79caf74b0561464736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/walletCache.go b/pkg/bindings/walletCache.go index 725ba3b4..fb437f45 100644 --- a/pkg/bindings/walletCache.go +++ b/pkg/bindings/walletCache.go @@ -31,7 +31,7 @@ var ( const WalletCacheABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_walletImplementation_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_defaultDailyLimit_\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletDeployerNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"addresspayable\",\"name\":\"_wallet\",\"type\":\"address\"}],\"name\":\"CachedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"cacheWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"cachedWallets\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cachedWalletsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultDailyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCachePop\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletDeployerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletCacheBin is the compiled bytecode used for deploying new contracts. -var WalletCacheBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306035557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966036557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386037553480156100c157600080fd5b50604051610c4e380380610c4e833981810160405260e08110156100e457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919061011a86610173565b61012384610241565b603880546001600160a01b0319166001600160a01b0389161790556039859055821561014f5760358390555b811561015b5760368290555b80156101675760378190555b505050505050506102f4565b600054610100900460ff168061018c575061018c6102ee565b8061019a575060005460ff16155b6101d55760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff16158015610200576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561022b57603380546001600160a01b0319166001600160a01b0384161790555b801561023d576000805461ff00191690555b5050565b600054610100900460ff168061025a575061025a6102ee565b80610268575060005460ff16155b6102a35760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff161580156102ce576000805460ff1961ff0019909116610100171660011790555b811561022b576034829055801561023d576000805461ff00191690555050565b303b1590565b61091d806103036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063877337b011610071578063877337b01461010657806387e8bed11461010e578063a4570e5114610116578063c76b08881461011e578063e2b4ce9714610126578063fc6cabe71461012e576100a9565b806360dbc5de146100ae57806371b9076a146100b8578063747c31d6146100d25780637d73b231146100da5780638117abc1146100fe575b600080fd5b6100b661014b565b005b6100c06102f5565b60408051918252519081900360200190f35b6100c06102fb565b6100e2610301565b604080516001600160a01b039092168252519081900360200190f35b6100e2610310565b6100c061031f565b6100c0610325565b6100e261032b565b6100c0610412565b6100c0610418565b6100e26004803603602081101561014457600080fd5b503561041e565b6000610158603754610445565b6038546040519192506000916001600160a01b039091169061017990610598565b6001600160a01b03909116815260406020820181905260008183018190529051918290036080019190f0801580156101b5573d6000803e3d6000fd5b509050806001600160a01b03166369efdfc08360016101d2610301565b6036546101dd610418565b6035546039546040518863ffffffff1660e01b815260040180886001600160a01b031681526020018715158152602001866001600160a01b03168152602001858152602001848152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b5050603a80546001810182556000919091527fa2999d817b6757290b50e8ecf3fa939673403dd35c97de392fdb343b4015ce9e0180546001600160a01b0385166001600160a01b0319909116811790915560408051918252517f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e9350908190036020019150a15050565b603a5490565b60355481565b6033546001600160a01b031690565b6038546001600160a01b031681565b60365481565b60375481565b6000610338603754610445565b6001600160a01b0316336001600160a01b03161461039d576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b603a54600111156103b0576103b061014b565b603a80546000919060001981019081106103c657fe5b600091825260209091200154603a80546001600160a01b03909216925090806103eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60395481565b60345490565b603a818154811061042b57fe5b6000918252602090912001546001600160a01b0316905081565b6033546000906001600160a01b03166104a5576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156104f157600080fd5b505afa158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d602081101561059057600080fd5b505192915050565b610342806105a68339019056fe60806040526040516103423803806103428339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610223565b6101be8161021d60201b61009a1760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610307603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b151590565b60d6806102316000396000f3fe6080604052366044576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b6050604c6052565b6077565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156095573d6000f35b3d6000fd5b3b15159056fea26469706673582212208ed6ffa1ceda73e7f2255c282c025b00bc31cb41fe1328bb37a62d3c6f61c36564736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212201a9cd7ba0e02704c643345fc2525f06ac78374e1028cc7674766f45d8f66d53a64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletCacheBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306035557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966036557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386037553480156100c157600080fd5b50604051610c4e380380610c4e833981810160405260e08110156100e457600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919061011a86610173565b61012384610241565b603880546001600160a01b0319166001600160a01b0389161790556039859055821561014f5760358390555b811561015b5760368290555b80156101675760378190555b505050505050506102f4565b600054610100900460ff168061018c575061018c6102ee565b8061019a575060005460ff16155b6101d55760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff16158015610200576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561022b57603380546001600160a01b0319166001600160a01b0384161790555b801561023d576000805461ff00191690555b5050565b600054610100900460ff168061025a575061025a6102ee565b80610268575060005460ff16155b6102a35760405162461bcd60e51b815260040180806020018281038252602e815260200180610c20602e913960400191505060405180910390fd5b600054610100900460ff161580156102ce576000805460ff1961ff0019909116610100171660011790555b811561022b576034829055801561023d576000805461ff00191690555050565b303b1590565b61091d806103036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063877337b011610071578063877337b01461010657806387e8bed11461010e578063a4570e5114610116578063c76b08881461011e578063e2b4ce9714610126578063fc6cabe71461012e576100a9565b806360dbc5de146100ae57806371b9076a146100b8578063747c31d6146100d25780637d73b231146100da5780638117abc1146100fe575b600080fd5b6100b661014b565b005b6100c06102f5565b60408051918252519081900360200190f35b6100c06102fb565b6100e2610301565b604080516001600160a01b039092168252519081900360200190f35b6100e2610310565b6100c061031f565b6100c0610325565b6100e261032b565b6100c0610412565b6100c0610418565b6100e26004803603602081101561014457600080fd5b503561041e565b6000610158603754610445565b6038546040519192506000916001600160a01b039091169061017990610598565b6001600160a01b03909116815260406020820181905260008183018190529051918290036080019190f0801580156101b5573d6000803e3d6000fd5b509050806001600160a01b03166369efdfc08360016101d2610301565b6036546101dd610418565b6035546039546040518863ffffffff1660e01b815260040180886001600160a01b031681526020018715158152602001866001600160a01b03168152602001858152602001848152602001838152602001828152602001975050505050505050600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b5050603a80546001810182556000919091527fa2999d817b6757290b50e8ecf3fa939673403dd35c97de392fdb343b4015ce9e0180546001600160a01b0385166001600160a01b0319909116811790915560408051918252517f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e9350908190036020019150a15050565b603a5490565b60355481565b6033546001600160a01b031690565b6038546001600160a01b031681565b60365481565b60375481565b6000610338603754610445565b6001600160a01b0316336001600160a01b03161461039d576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b603a54600111156103b0576103b061014b565b603a80546000919060001981019081106103c657fe5b600091825260209091200154603a80546001600160a01b03909216925090806103eb57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60395481565b60345490565b603a818154811061042b57fe5b6000918252602090912001546001600160a01b0316905081565b6033546000906001600160a01b03166104a5576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156104f157600080fd5b505afa158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d602081101561059057600080fd5b505192915050565b610342806105a68339019056fe60806040526040516103423803806103428339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610223565b6101be8161021d60201b61009a1760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610307603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b151590565b60d6806102316000396000f3fe6080604052366044576040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b6050604c6052565b6077565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156095573d6000f35b3d6000fd5b3b15159056fea26469706673582212208ed6ffa1ceda73e7f2255c282c025b00bc31cb41fe1328bb37a62d3c6f61c36564736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220d5d067607b7c3377fe6ff5918c0f2ca048cf1884327a3932ad11302b6e96960f64736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletCache deploys a new Ethereum contract, binding an instance of WalletCache to it. func DeployWalletCache(auth *bind.TransactOpts, backend bind.ContractBackend, _walletImplementation_ common.Address, _ens_ common.Address, _defaultDailyLimit_ *big.Int, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _tokenWhitelistNode_ [32]byte, _walletDeployerNode_ [32]byte) (common.Address, *types.Transaction, *WalletCache, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index 5b2a44a9..d56c43d7 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220df928773237f3480de76716c2be1536d64a8c25b91dbe8ea70efaf3e7c7eab6164736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220d5eb27adc4c1c2d9abef80d913a4e8536cb5bae07761a5f4e2dea4a7e075845064736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { From a35a868299899f3a7f60c0d7027d23200abb926b Mon Sep 17 00:00:00 2001 From: Riccardo Persiani Date: Mon, 26 Apr 2021 15:24:28 +0200 Subject: [PATCH 66/66] fix: run build and tools --- contracts/artifacts/AddressWhitelist.json | 592 +++++ .../artifacts/AddressWhitelist_metadata.json | 825 +++++++ contracts/artifacts/ControllableOwnable.json | 205 ++ .../ControllableOwnable_metadata.json | 426 ++++ contracts/artifacts/DailyLimitTrait.json | 71 + .../artifacts/DailyLimitTrait_metadata.json | 262 +++ contracts/artifacts/GasTopUpLimit.json | 359 +++ .../artifacts/GasTopUpLimit_metadata.json | 589 +++++ contracts/artifacts/LoadLimit.json | 376 ++++ contracts/artifacts/LoadLimit_metadata.json | 610 +++++ contracts/artifacts/SelfCallableOwnable.json | 158 ++ .../SelfCallableOwnable_metadata.json | 377 ++++ contracts/artifacts/SpendLimit.json | 359 +++ contracts/artifacts/SpendLimit_metadata.json | 589 +++++ contracts/artifacts/Wallet.json | 1660 ++++++++++++++ contracts/artifacts/Wallet_metadata.json | 2004 +++++++++++++++++ contracts/externals/artifacts/Address.json | 58 + .../externals/artifacts/Address_metadata.json | 38 + .../mocks/isValidSignatureExporter.go | 2 +- pkg/bindings/wallet.go | 2 +- pkg/bindings/walletDeployer.go | 2 +- tools/slither/slither.db.json | 2 +- 22 files changed, 9562 insertions(+), 4 deletions(-) create mode 100644 contracts/artifacts/AddressWhitelist.json create mode 100644 contracts/artifacts/AddressWhitelist_metadata.json create mode 100644 contracts/artifacts/ControllableOwnable.json create mode 100644 contracts/artifacts/ControllableOwnable_metadata.json create mode 100644 contracts/artifacts/DailyLimitTrait.json create mode 100644 contracts/artifacts/DailyLimitTrait_metadata.json create mode 100644 contracts/artifacts/GasTopUpLimit.json create mode 100644 contracts/artifacts/GasTopUpLimit_metadata.json create mode 100644 contracts/artifacts/LoadLimit.json create mode 100644 contracts/artifacts/LoadLimit_metadata.json create mode 100644 contracts/artifacts/SelfCallableOwnable.json create mode 100644 contracts/artifacts/SelfCallableOwnable_metadata.json create mode 100644 contracts/artifacts/SpendLimit.json create mode 100644 contracts/artifacts/SpendLimit_metadata.json create mode 100644 contracts/artifacts/Wallet.json create mode 100644 contracts/artifacts/Wallet_metadata.json create mode 100644 contracts/externals/artifacts/Address.json create mode 100644 contracts/externals/artifacts/Address_metadata.json diff --git a/contracts/artifacts/AddressWhitelist.json b/contracts/artifacts/AddressWhitelist.json new file mode 100644 index 00000000..1491a0d7 --- /dev/null +++ b/contracts/artifacts/AddressWhitelist.json @@ -0,0 +1,592 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "görli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b50611f60806100656000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80637fd004fa116100b8578063cd7958dd1161007c578063cd7958dd14610385578063ce0b5bd514610438578063d251fefc14610455578063de212bf314610472578063e2b4ce971461047a578063f42176481461048257610137565b80637fd004fa146102bc5780638da5cb5b1461032a578063b242e53414610332578063be40ba7914610360578063cbd2ac681461036857610137565b806347b55a9d116100ff57806347b55a9d146101fd5780635adc02ab146102055780636137d67014610222578063715018a6146102905780637d73b2311461029857610137565b8063100f23fd1461013c5780632121dc751461015b57806326d05ab214610177578063294f40251461017f57806332531c3c146101d7575b600080fd5b6101596004803603602081101561015257600080fd5b50356104f0565b005b610163610695565b604080519115158252519081900360200190f35b6101636106a6565b6101876106af565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101c35781810151838201526020016101ab565b505050509050019250505060405180910390f35b610163600480360360208110156101ed57600080fd5b50356001600160a01b0316610711565b610187610726565b6101596004803603602081101561021b57600080fd5b5035610786565b6101596004803603602081101561023857600080fd5b810190602081018135600160201b81111561025257600080fd5b82018360208201111561026457600080fd5b803590602001918460208302840111600160201b8311171561028557600080fd5b509092509050610a68565b610159610c8e565b6102a0610d8c565b604080516001600160a01b039092168252519081900360200190f35b610159600480360360208110156102d257600080fd5b810190602081018135600160201b8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460208302840111600160201b8311171561031f57600080fd5b509092509050610d9b565b6102a06110dd565b6101596004803603604081101561034857600080fd5b506001600160a01b03813516906020013515156110ec565b6101636112a6565b6101596004803603602081101561037e57600080fd5b50356112b5565b6104266004803603602081101561039b57600080fd5b810190602081018135600160201b8111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460208302840111600160201b831117156103e857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611644945050505050565b60408051918252519081900360200190f35b6101596004803603602081101561044e57600080fd5b503561169e565b6102a06004803603602081101561046b57600080fd5b5035611847565b61016361186e565b61042661187c565b6101596004803603602081101561049857600080fd5b810190602081018135600160201b8111156104b257600080fd5b8201836020820111156104c457600080fd5b803590602001918460208302840111600160201b831117156104e557600080fd5b509092509050611882565b6104f933611bd4565b80610508575061050833611be8565b610552576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a5460ff166105a1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61060460388054806020026020016040519081016040528092919081815260200182805480156105fa57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105dc575b5050505050611644565b81146106415760405162461bcd60e51b8152600401808060200182810382526023815260200180611f096023913960400191505060405180910390fd5b61064d60386000611dfa565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b603554600160a01b900460ff165b90565b603a5460ff1681565b6060603980548060200260200160405190810160405280929190818152602001828054801561070757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106e9575b5050505050905090565b60366020526000908152604090205460ff1681565b60606038805480602002602001604051908101604052809291908181526020018280548015610707576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116106e9575050505050905090565b61078f33611be8565b6107e0576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b603a5460ff1661082f576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61089060388054806020026020016040519081016040528092919081815260200182805480156105fa576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116105dc575050505050611644565b81146108cd5760405162461bcd60e51b8152600401808060200182810382526023815260200180611f096023913960400191505060405180910390fd5b60005b6038548110156109b45760366000603883815481106108eb57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff166109ac576001603660006038848154811061092a57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560388054603791908390811061097057fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b6001016108d0565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b03166001600160a01b03168152602001806020018281038252838181548152602001915080548015610a4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a22575b5050935050505060405180910390a1610a5b60386000611dfa565b50603a805460ff19169055565b610a7133611bd4565b80610a7b57503330145b610abf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff16158015610ada5750603a54610100900460ff16155b610b2b576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff16610b84576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b80610bc8576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b610bd460398383611e1b565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d19285928592610c439285918591829185019084908082843760009201919091525061164492505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b610c9733611bd4565b610ce1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16610d3f576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b610da433611bd4565b80610dae57503330145b610df2576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff16158015610e0d5750603a54610100900460ff16155b610e5e576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015610f7a57610eb7828281518110610eaa57fe5b6020026020010151611bd4565b15610f02576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110610f1957fe5b60200260200101516001600160a01b03161415610f72576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101610e92565b50603a5462010000900460ff16610fd4576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81611018576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61102460388484611e1b565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c92869286926110919285918591829185019084908082843760009201919091525061164492505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6035546001600160a01b031690565b6110f533611bd4565b61113f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff1661119d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166111e25760405162461bcd60e51b8152600401808060200182810382526023815260200180611ee66023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061123b57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b6112be33611be8565b61130f576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b603a54610100900460ff16611363576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113c460398054806020026020016040519081016040528092919081815260200182805480156105fa576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116105dc575050505050611644565b81146114015760405162461bcd60e51b8152600401808060200182810382526023815260200180611f096023913960400191505060405180910390fd5b60005b60395481101561158f57603660006039838154811061141f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615611587576000603660006039848154811061145f57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6037546114a990600163ffffffff611c7c16565b81101561157157603982815481106114bd57fe5b600091825260209091200154603780546001600160a01b0390921691839081106114e357fe5b6000918252602090912001546001600160a01b031614156115695760378054600019810190811061151057fe5b600091825260209091200154603780546001600160a01b03909216918390811061153657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611571565b600101611495565b506037805490611585906000198301611e7e565b505b600101611404565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561161b57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115fd575b5050935050505060405180910390a161163660396000611dfa565b50603a805461ff0019169055565b60008160405160200180828051906020019060200280838360005b8381101561167757818101518382015260200161165f565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6116a733611bd4565b806116b657506116b633611be8565b611700576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a54610100900460ff16611754576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6117b560398054806020026020016040519081016040528092919081815260200182805480156105fa576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116105dc575050505050611644565b81146117f25760405162461bcd60e51b8152600401808060200182810382526023815260200180611f096023913960400191505060405180910390fd5b6117fe60396000611dfa565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061185457fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b61188b33611bd4565b8061189557503330145b6118d9576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156119e857611925828281518110610eaa57fe5b15611970576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061198757fe5b60200260200101516001600160a01b031614156119e0576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161190d565b50603a5462010000900460ff1615611a3f576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015611b305760366000858584818110611a5a57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611b2857600160366000868685818110611a9657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506037848483818110611aeb57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101611a42565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015611bc057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ba2575b5050935050505060405180910390a1505050565b6035546001600160a01b0390811691161490565b6000611bf5603454611cd9565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c4a57600080fd5b505afa158015611c5e573d6000803e3d6000fd5b505050506040513d6020811015611c7457600080fd5b505192915050565b600082821115611cd3576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6033546000906001600160a01b0316611d39576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d8557600080fd5b505afa158015611d99573d6000803e3d6000fd5b505050506040513d6020811015611daf57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015611c4a57600080fd5b5080546000825590600052602060002090810190611e189190611ea7565b50565b828054828255906000526020600020908101928215611e6e579160200282015b82811115611e6e5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190611e3b565b50611e7a929150611ec1565b5090565b815481835581811115611ea257600083815260209020611ea2918101908301611ea7565b505050565b6106a391905b80821115611e7a5760008155600101611ead565b6106a391905b80821115611e7a5780546001600160a01b0319168155600101611ec756fe6f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573736e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368a265627a7a72315820c884f4382f33901d736f909bd6aee12ccee90702059e7fbbc13739643ea9c7f364736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH15 0xC2E074EC69A0DFB2997BA6C7D2E1E OR SWAP1 SSTORE PUSH32 0x7F2CE995617D2816B426C5C8698C5EC2952F7A34BB10F38326F74933D5893697 PUSH1 0x34 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F60 DUP1 PUSH2 0x65 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7FD004FA GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xCD7958DD GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xCD7958DD EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xCE0B5BD5 EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xDE212BF3 EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0xF4217648 EQ PUSH2 0x482 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x7FD004FA EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0xBE40BA79 EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0xCBD2AC68 EQ PUSH2 0x368 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x47B55A9D GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x47B55A9D EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x5ADC02AB EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x6137D670 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x298 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x100F23FD EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x26D05AB2 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x294F4025 EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x32531C3C EQ PUSH2 0x1D7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x163 PUSH2 0x695 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x163 PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x6AF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1AB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x163 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x711 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x726 JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x786 JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x159 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x2A0 PUSH2 0xD8C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xD9B JUMP JUMPDEST PUSH2 0x2A0 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x10EC JUMP JUMPDEST PUSH2 0x163 PUSH2 0x12A6 JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12B5 JUMP JUMPDEST PUSH2 0x426 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1644 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x169E JUMP JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1847 JUMP JUMPDEST PUSH2 0x163 PUSH2 0x186E JUMP JUMPDEST PUSH2 0x426 PUSH2 0x187C JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1882 JUMP JUMPDEST PUSH2 0x4F9 CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0x508 JUMPI POP PUSH2 0x508 CALLER PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x552 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND PUSH2 0x5A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x604 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5DC JUMPI JUMPDEST POP POP POP POP POP PUSH2 0x1644 JUMP JUMPDEST DUP2 EQ PUSH2 0x641 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F09 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x64D PUSH1 0x38 PUSH1 0x0 PUSH2 0x1DFA JUMP JUMPDEST PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7794EFF834D760583543E6E510E717A5E66D2C064E225F4DB448343C3E66AFCF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x707 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E9 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x707 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E9 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x78F CALLER PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x7E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND PUSH2 0x82F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x890 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5DC JUMPI POP POP POP POP POP PUSH2 0x1644 JUMP JUMPDEST DUP2 EQ PUSH2 0x8CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F09 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x38 SLOAD DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x36 PUSH1 0x0 PUSH1 0x38 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x8EB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x9AC JUMPI PUSH1 0x1 PUSH1 0x36 PUSH1 0x0 PUSH1 0x38 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x92A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x38 DUP1 SLOAD PUSH1 0x37 SWAP2 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x970 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP4 SLOAD PUSH1 0x1 DUP2 ADD DUP6 SSTORE SWAP4 DUP4 MSTORE SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x8D0 JUMP JUMPDEST POP PUSH32 0xB2F6CCCEE7A369E23E293C25AA19BEF80AF11EB26DEBA3EA0F2A02783F752E4A CALLER PUSH1 0x38 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD DUP1 ISZERO PUSH2 0xA40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA22 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xA5B PUSH1 0x38 PUSH1 0x0 PUSH2 0x1DFA JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xA71 CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0xA7B JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0xABF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xADA JUMPI POP PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0xB2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x77686974656C6973742073756D62697373696F6E2070656E64696E6700000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x1DDA1A5D195B1A5CDD081B9BDD081A5B9A5D1A585B1A5E9959 PUSH1 0x3A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xBC8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x195B5C1D1E481DDA1A5D195B1A5CDD PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBD4 PUSH1 0x39 DUP4 DUP4 PUSH2 0x1E1B JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP5 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP4 DUP3 MSTORE PUSH32 0xFBC0E5CA6C7E4858DAF0FDB185EF5186203E74EC9C64737E93C0AEAEC596E1D1 SWAP3 DUP6 SWAP3 DUP6 SWAP3 PUSH2 0xC43 SWAP3 DUP6 SWAP2 DUP6 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1644 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0xC97 CALLER PUSH2 0x1BD4 JUMP JUMPDEST PUSH2 0xCE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xDA4 CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0xDAE JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0xDF2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xE0D JUMPI POP PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0xE5E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x77686974656C6973742073756D62697373696F6E2070656E64696E6700000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP3 POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xF7A JUMPI PUSH2 0xEB7 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEAA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1BD4 JUMP JUMPDEST ISZERO PUSH2 0xF02 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x636F6E7461696E73206F776E65722061646472657373 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF19 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF72 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x636F6E7461696E7320302061646472657373 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xE92 JUMP JUMPDEST POP PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xFD4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x1DDA1A5D195B1A5CDD081B9BDD081A5B9A5D1A585B1A5E9959 PUSH1 0x3A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x1018 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x195B5C1D1E481DDA1A5D195B1A5CDD PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1024 PUSH1 0x38 DUP5 DUP5 PUSH2 0x1E1B JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP6 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP5 DUP3 MSTORE PUSH32 0x9C80B3B5F68B3E017766D59E8D09B34EFE6462B05C398F35CAB9E271D9BC3B9C SWAP3 DUP7 SWAP3 DUP7 SWAP3 PUSH2 0x1091 SWAP3 DUP6 SWAP2 DUP6 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1644 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x10F5 CALLER PUSH2 0x1BD4 JUMP JUMPDEST PUSH2 0x113F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x119D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EE6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x123B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x12BE CALLER PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x130F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13C4 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5DC JUMPI POP POP POP POP POP PUSH2 0x1644 JUMP JUMPDEST DUP2 EQ PUSH2 0x1401 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F09 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x39 SLOAD DUP2 LT ISZERO PUSH2 0x158F JUMPI PUSH1 0x36 PUSH1 0x0 PUSH1 0x39 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x141F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1587 JUMPI PUSH1 0x0 PUSH1 0x36 PUSH1 0x0 PUSH1 0x39 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x145F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE JUMPDEST PUSH1 0x37 SLOAD PUSH2 0x14A9 SWAP1 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x1C7C AND JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1571 JUMPI PUSH1 0x39 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14BD JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x14E3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1569 JUMPI PUSH1 0x37 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x1510 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x1536 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x1571 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1495 JUMP JUMPDEST POP PUSH1 0x37 DUP1 SLOAD SWAP1 PUSH2 0x1585 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x1E7E JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1404 JUMP JUMPDEST POP PUSH32 0xD218C430FA348F4CE67791021B6B89C0C3EACD4EAD1D8F5B83C60038EC28249B CALLER PUSH1 0x39 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x161B JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x15FD JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x1636 PUSH1 0x39 PUSH1 0x0 PUSH2 0x1DFA JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1677 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x165F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x16A7 CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0x16B6 JUMPI POP PUSH2 0x16B6 CALLER PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x1700 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1754 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17B5 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5DC JUMPI POP POP POP POP POP PUSH2 0x1644 JUMP JUMPDEST DUP2 EQ PUSH2 0x17F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F09 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17FE PUSH1 0x39 PUSH1 0x0 PUSH2 0x1DFA JUMP JUMPDEST PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x13C935EB475AA0F6E931FECE83E2AC44569CE2D53460D29A6DEDAB40B965C8A3 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x37 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1854 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x188B CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0x1895 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x18D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP3 POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x19E8 JUMPI PUSH2 0x1925 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEAA JUMPI INVALID JUMPDEST ISZERO PUSH2 0x1970 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x636F6E7461696E73206F776E65722061646472657373 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1987 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x19E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x636F6E7461696E7320302061646472657373 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x190D JUMP JUMPDEST POP PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1A3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081A5B9A5D1A585B1A5E9959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1B30 JUMPI PUSH1 0x36 PUSH1 0x0 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1A5A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1B28 JUMPI PUSH1 0x1 PUSH1 0x36 PUSH1 0x0 DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x1A96 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x37 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1AEB JUMPI INVALID JUMPDEST DUP4 SLOAD PUSH1 0x1 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A42 JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH3 0xFF0000 NOT AND PUSH3 0x10000 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 DUP2 MSTORE PUSH1 0x37 DUP1 SLOAD SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH32 0xB2F6CCCEE7A369E23E293C25AA19BEF80AF11EB26DEBA3EA0F2A02783F752E4A SWAP5 SWAP3 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x60 DUP4 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0x1BC0 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1BA2 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF5 PUSH1 0x34 SLOAD PUSH2 0x1CD9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C5E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1CD3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D39 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E18 SWAP2 SWAP1 PUSH2 0x1EA7 JUMP JUMPDEST POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1E6E JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1E6E JUMPI DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 CALLDATALOAD AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1E3B JUMP JUMPDEST POP PUSH2 0x1E7A SWAP3 SWAP2 POP PUSH2 0x1EC1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x1EA2 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x1EA2 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x1EA7 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6A3 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1E7A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1EAD JUMP JUMPDEST PUSH2 0x6A3 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1E7A JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1EC7 JUMP INVALID PUSH16 0x776E65722063616E6E6F742062652073 PUSH6 0x7420746F207A PUSH6 0x726F20616464 PUSH19 0x6573736E6F6E2D6D61746368696E672070656E PUSH5 0x696E672077 PUSH9 0x6974656C6973742068 PUSH2 0x7368 LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC8 DUP5 DELEGATECALL CODESIZE 0x2F CALLER SWAP1 SAR PUSH20 0x6F909BD6AEE12CCEE90702059E7FBBC13739643E 0xA9 0xC7 RETURN PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "2400:8868:31:-;;;1311:82:25;;;-1:-1:-1;;;;;;1311:82:25;1350:42;1311:82;;;1162:66:24;1312:58;;2400:8868:31;5:2:-1;;;;30:1;27;20:12;5:2;2400:8868:31;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106101375760003560e01c80637fd004fa116100b8578063cd7958dd1161007c578063cd7958dd14610385578063ce0b5bd514610438578063d251fefc14610455578063de212bf314610472578063e2b4ce971461047a578063f42176481461048257610137565b80637fd004fa146102bc5780638da5cb5b1461032a578063b242e53414610332578063be40ba7914610360578063cbd2ac681461036857610137565b806347b55a9d116100ff57806347b55a9d146101fd5780635adc02ab146102055780636137d67014610222578063715018a6146102905780637d73b2311461029857610137565b8063100f23fd1461013c5780632121dc751461015b57806326d05ab214610177578063294f40251461017f57806332531c3c146101d7575b600080fd5b6101596004803603602081101561015257600080fd5b50356104f0565b005b610163610695565b604080519115158252519081900360200190f35b6101636106a6565b6101876106af565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101c35781810151838201526020016101ab565b505050509050019250505060405180910390f35b610163600480360360208110156101ed57600080fd5b50356001600160a01b0316610711565b610187610726565b6101596004803603602081101561021b57600080fd5b5035610786565b6101596004803603602081101561023857600080fd5b810190602081018135600160201b81111561025257600080fd5b82018360208201111561026457600080fd5b803590602001918460208302840111600160201b8311171561028557600080fd5b509092509050610a68565b610159610c8e565b6102a0610d8c565b604080516001600160a01b039092168252519081900360200190f35b610159600480360360208110156102d257600080fd5b810190602081018135600160201b8111156102ec57600080fd5b8201836020820111156102fe57600080fd5b803590602001918460208302840111600160201b8311171561031f57600080fd5b509092509050610d9b565b6102a06110dd565b6101596004803603604081101561034857600080fd5b506001600160a01b03813516906020013515156110ec565b6101636112a6565b6101596004803603602081101561037e57600080fd5b50356112b5565b6104266004803603602081101561039b57600080fd5b810190602081018135600160201b8111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460208302840111600160201b831117156103e857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611644945050505050565b60408051918252519081900360200190f35b6101596004803603602081101561044e57600080fd5b503561169e565b6102a06004803603602081101561046b57600080fd5b5035611847565b61016361186e565b61042661187c565b6101596004803603602081101561049857600080fd5b810190602081018135600160201b8111156104b257600080fd5b8201836020820111156104c457600080fd5b803590602001918460208302840111600160201b831117156104e557600080fd5b509092509050611882565b6104f933611bd4565b80610508575061050833611be8565b610552576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a5460ff166105a1576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61060460388054806020026020016040519081016040528092919081815260200182805480156105fa57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105dc575b5050505050611644565b81146106415760405162461bcd60e51b8152600401808060200182810382526023815260200180611f096023913960400191505060405180910390fd5b61064d60386000611dfa565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b603554600160a01b900460ff165b90565b603a5460ff1681565b6060603980548060200260200160405190810160405280929190818152602001828054801561070757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106e9575b5050505050905090565b60366020526000908152604090205460ff1681565b60606038805480602002602001604051908101604052809291908181526020018280548015610707576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116106e9575050505050905090565b61078f33611be8565b6107e0576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b603a5460ff1661082f576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61089060388054806020026020016040519081016040528092919081815260200182805480156105fa576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116105dc575050505050611644565b81146108cd5760405162461bcd60e51b8152600401808060200182810382526023815260200180611f096023913960400191505060405180910390fd5b60005b6038548110156109b45760366000603883815481106108eb57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff166109ac576001603660006038848154811061092a57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560388054603791908390811061097057fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b6001016108d0565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b03166001600160a01b03168152602001806020018281038252838181548152602001915080548015610a4057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a22575b5050935050505060405180910390a1610a5b60386000611dfa565b50603a805460ff19169055565b610a7133611bd4565b80610a7b57503330145b610abf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff16158015610ada5750603a54610100900460ff16155b610b2b576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff16610b84576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b80610bc8576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b610bd460398383611e1b565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d19285928592610c439285918591829185019084908082843760009201919091525061164492505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b610c9733611bd4565b610ce1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16610d3f576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b610da433611bd4565b80610dae57503330145b610df2576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff16158015610e0d5750603a54610100900460ff16155b610e5e576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015610f7a57610eb7828281518110610eaa57fe5b6020026020010151611bd4565b15610f02576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110610f1957fe5b60200260200101516001600160a01b03161415610f72576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101610e92565b50603a5462010000900460ff16610fd4576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81611018576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61102460388484611e1b565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c92869286926110919285918591829185019084908082843760009201919091525061164492505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b6035546001600160a01b031690565b6110f533611bd4565b61113f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff1661119d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166111e25760405162461bcd60e51b8152600401808060200182810382526023815260200180611ee66023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061123b57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5462010000900460ff1681565b6112be33611be8565b61130f576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b603a54610100900460ff16611363576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113c460398054806020026020016040519081016040528092919081815260200182805480156105fa576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116105dc575050505050611644565b81146114015760405162461bcd60e51b8152600401808060200182810382526023815260200180611f096023913960400191505060405180910390fd5b60005b60395481101561158f57603660006039838154811061141f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615611587576000603660006039848154811061145f57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6037546114a990600163ffffffff611c7c16565b81101561157157603982815481106114bd57fe5b600091825260209091200154603780546001600160a01b0390921691839081106114e357fe5b6000918252602090912001546001600160a01b031614156115695760378054600019810190811061151057fe5b600091825260209091200154603780546001600160a01b03909216918390811061153657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611571565b600101611495565b506037805490611585906000198301611e7e565b505b600101611404565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561161b57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115fd575b5050935050505060405180910390a161163660396000611dfa565b50603a805461ff0019169055565b60008160405160200180828051906020019060200280838360005b8381101561167757818101518382015260200161165f565b50505050905001915050604051602081830303815290604052805190602001209050919050565b6116a733611bd4565b806116b657506116b633611be8565b611700576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a54610100900460ff16611754576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6117b560398054806020026020016040519081016040528092919081815260200182805480156105fa576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116105dc575050505050611644565b81146117f25760405162461bcd60e51b8152600401808060200182810382526023815260200180611f096023913960400191505060405180910390fd5b6117fe60396000611dfa565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b6037818154811061185457fe5b6000918252602090912001546001600160a01b0316905081565b603a54610100900460ff1681565b60345490565b61188b33611bd4565b8061189557503330145b6118d9576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156119e857611925828281518110610eaa57fe5b15611970576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061198757fe5b60200260200101516001600160a01b031614156119e0576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b60010161190d565b50603a5462010000900460ff1615611a3f576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015611b305760366000858584818110611a5a57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611b2857600160366000868685818110611a9657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506037848483818110611aeb57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101611a42565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015611bc057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ba2575b5050935050505060405180910390a1505050565b6035546001600160a01b0390811691161490565b6000611bf5603454611cd9565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c4a57600080fd5b505afa158015611c5e573d6000803e3d6000fd5b505050506040513d6020811015611c7457600080fd5b505192915050565b600082821115611cd3576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6033546000906001600160a01b0316611d39576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d8557600080fd5b505afa158015611d99573d6000803e3d6000fd5b505050506040513d6020811015611daf57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015611c4a57600080fd5b5080546000825590600052602060002090810190611e189190611ea7565b50565b828054828255906000526020600020908101928215611e6e579160200282015b82811115611e6e5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190611e3b565b50611e7a929150611ec1565b5090565b815481835581811115611ea257600083815260209020611ea2918101908301611ea7565b505050565b6106a391905b80821115611e7a5760008155600101611ead565b6106a391905b80821115611e7a5780546001600160a01b0319168155600101611ec756fe6f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573736e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368a265627a7a72315820c884f4382f33901d736f909bd6aee12ccee90702059e7fbbc13739643ea9c7f364736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7FD004FA GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xCD7958DD GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xCD7958DD EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xCE0B5BD5 EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xDE212BF3 EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x47A JUMPI DUP1 PUSH4 0xF4217648 EQ PUSH2 0x482 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x7FD004FA EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x332 JUMPI DUP1 PUSH4 0xBE40BA79 EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0xCBD2AC68 EQ PUSH2 0x368 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x47B55A9D GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x47B55A9D EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0x5ADC02AB EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x6137D670 EQ PUSH2 0x222 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x298 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x100F23FD EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0x26D05AB2 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x294F4025 EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x32531C3C EQ PUSH2 0x1D7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x163 PUSH2 0x695 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x163 PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x6AF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1AB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x163 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x711 JUMP JUMPDEST PUSH2 0x187 PUSH2 0x726 JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x786 JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x252 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x159 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x2A0 PUSH2 0xD8C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xD9B JUMP JUMPDEST PUSH2 0x2A0 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x348 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x10EC JUMP JUMPDEST PUSH2 0x163 PUSH2 0x12A6 JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x12B5 JUMP JUMPDEST PUSH2 0x426 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1644 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x169E JUMP JUMPDEST PUSH2 0x2A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1847 JUMP JUMPDEST PUSH2 0x163 PUSH2 0x186E JUMP JUMPDEST PUSH2 0x426 PUSH2 0x187C JUMP JUMPDEST PUSH2 0x159 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1882 JUMP JUMPDEST PUSH2 0x4F9 CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0x508 JUMPI POP PUSH2 0x508 CALLER PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x552 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND PUSH2 0x5A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x604 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5DC JUMPI JUMPDEST POP POP POP POP POP PUSH2 0x1644 JUMP JUMPDEST DUP2 EQ PUSH2 0x641 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F09 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x64D PUSH1 0x38 PUSH1 0x0 PUSH2 0x1DFA JUMP JUMPDEST PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7794EFF834D760583543E6E510E717A5E66D2C064E225F4DB448343C3E66AFCF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x707 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E9 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x707 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E9 JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x78F CALLER PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x7E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND PUSH2 0x82F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x890 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5DC JUMPI POP POP POP POP POP PUSH2 0x1644 JUMP JUMPDEST DUP2 EQ PUSH2 0x8CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F09 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x38 SLOAD DUP2 LT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x36 PUSH1 0x0 PUSH1 0x38 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x8EB JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x9AC JUMPI PUSH1 0x1 PUSH1 0x36 PUSH1 0x0 PUSH1 0x38 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x92A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x38 DUP1 SLOAD PUSH1 0x37 SWAP2 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x970 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP4 SLOAD PUSH1 0x1 DUP2 ADD DUP6 SSTORE SWAP4 DUP4 MSTORE SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x8D0 JUMP JUMPDEST POP PUSH32 0xB2F6CCCEE7A369E23E293C25AA19BEF80AF11EB26DEBA3EA0F2A02783F752E4A CALLER PUSH1 0x38 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD DUP1 ISZERO PUSH2 0xA40 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA22 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xA5B PUSH1 0x38 PUSH1 0x0 PUSH2 0x1DFA JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xA71 CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0xA7B JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0xABF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xADA JUMPI POP PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0xB2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x77686974656C6973742073756D62697373696F6E2070656E64696E6700000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xB84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x1DDA1A5D195B1A5CDD081B9BDD081A5B9A5D1A585B1A5E9959 PUSH1 0x3A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xBC8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x195B5C1D1E481DDA1A5D195B1A5CDD PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBD4 PUSH1 0x39 DUP4 DUP4 PUSH2 0x1E1B JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP5 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP4 DUP3 MSTORE PUSH32 0xFBC0E5CA6C7E4858DAF0FDB185EF5186203E74EC9C64737E93C0AEAEC596E1D1 SWAP3 DUP6 SWAP3 DUP6 SWAP3 PUSH2 0xC43 SWAP3 DUP6 SWAP2 DUP6 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1644 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH2 0xC97 CALLER PUSH2 0x1BD4 JUMP JUMPDEST PUSH2 0xCE1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0xD3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xDA4 CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0xDAE JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0xDF2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0xE0D JUMPI POP PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0xE5E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x77686974656C6973742073756D62697373696F6E2070656E64696E6700000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP3 POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xF7A JUMPI PUSH2 0xEB7 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEAA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1BD4 JUMP JUMPDEST ISZERO PUSH2 0xF02 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x636F6E7461696E73206F776E65722061646472657373 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF19 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF72 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x636F6E7461696E7320302061646472657373 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xE92 JUMP JUMPDEST POP PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xFD4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x1DDA1A5D195B1A5CDD081B9BDD081A5B9A5D1A585B1A5E9959 PUSH1 0x3A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x1018 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x195B5C1D1E481DDA1A5D195B1A5CDD PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1024 PUSH1 0x38 DUP5 DUP5 PUSH2 0x1E1B JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP6 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP5 DUP3 MSTORE PUSH32 0x9C80B3B5F68B3E017766D59E8D09B34EFE6462B05C398F35CAB9E271D9BC3B9C SWAP3 DUP7 SWAP3 DUP7 SWAP3 PUSH2 0x1091 SWAP3 DUP6 SWAP2 DUP6 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1644 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x10F5 CALLER PUSH2 0x1BD4 JUMP JUMPDEST PUSH2 0x113F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x119D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x11E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EE6 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x123B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x12BE CALLER PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x130F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1363 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13C4 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5DC JUMPI POP POP POP POP POP PUSH2 0x1644 JUMP JUMPDEST DUP2 EQ PUSH2 0x1401 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F09 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x39 SLOAD DUP2 LT ISZERO PUSH2 0x158F JUMPI PUSH1 0x36 PUSH1 0x0 PUSH1 0x39 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x141F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1587 JUMPI PUSH1 0x0 PUSH1 0x36 PUSH1 0x0 PUSH1 0x39 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x145F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE JUMPDEST PUSH1 0x37 SLOAD PUSH2 0x14A9 SWAP1 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x1C7C AND JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x1571 JUMPI PUSH1 0x39 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x14BD JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x14E3 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x1569 JUMPI PUSH1 0x37 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x1510 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x1536 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x1571 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1495 JUMP JUMPDEST POP PUSH1 0x37 DUP1 SLOAD SWAP1 PUSH2 0x1585 SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x1E7E JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1404 JUMP JUMPDEST POP PUSH32 0xD218C430FA348F4CE67791021B6B89C0C3EACD4EAD1D8F5B83C60038EC28249B CALLER PUSH1 0x39 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x161B JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x15FD JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x1636 PUSH1 0x39 PUSH1 0x0 PUSH2 0x1DFA JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1677 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x165F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x16A7 CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0x16B6 JUMPI POP PUSH2 0x16B6 CALLER PUSH2 0x1BE8 JUMP JUMPDEST PUSH2 0x1700 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1754 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17B5 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x5FA JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5DC JUMPI POP POP POP POP POP PUSH2 0x1644 JUMP JUMPDEST DUP2 EQ PUSH2 0x17F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F09 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17FE PUSH1 0x39 PUSH1 0x0 PUSH2 0x1DFA JUMP JUMPDEST PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x13C935EB475AA0F6E931FECE83E2AC44569CE2D53460D29A6DEDAB40B965C8A3 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x37 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1854 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x188B CALLER PUSH2 0x1BD4 JUMP JUMPDEST DUP1 PUSH2 0x1895 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x18D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP3 POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x19E8 JUMPI PUSH2 0x1925 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xEAA JUMPI INVALID JUMPDEST ISZERO PUSH2 0x1970 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x636F6E7461696E73206F776E65722061646472657373 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1987 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x19E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x636F6E7461696E7320302061646472657373 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x190D JUMP JUMPDEST POP PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1A3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081A5B9A5D1A585B1A5E9959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1B30 JUMPI PUSH1 0x36 PUSH1 0x0 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x1A5A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1B28 JUMPI PUSH1 0x1 PUSH1 0x36 PUSH1 0x0 DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x1A96 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x37 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1AEB JUMPI INVALID JUMPDEST DUP4 SLOAD PUSH1 0x1 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A42 JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH3 0xFF0000 NOT AND PUSH3 0x10000 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 DUP2 MSTORE PUSH1 0x37 DUP1 SLOAD SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH32 0xB2F6CCCEE7A369E23E293C25AA19BEF80AF11EB26DEBA3EA0F2A02783F752E4A SWAP5 SWAP3 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x60 DUP4 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0x1BC0 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1BA2 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF5 PUSH1 0x34 SLOAD PUSH2 0x1CD9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C5E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1CD3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1D39 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D99 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E18 SWAP2 SWAP1 PUSH2 0x1EA7 JUMP JUMPDEST POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1E6E JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1E6E JUMPI DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 CALLDATALOAD AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1E3B JUMP JUMPDEST POP PUSH2 0x1E7A SWAP3 SWAP2 POP PUSH2 0x1EC1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x1EA2 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x1EA2 SWAP2 DUP2 ADD SWAP1 DUP4 ADD PUSH2 0x1EA7 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6A3 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1E7A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1EAD JUMP JUMPDEST PUSH2 0x6A3 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1E7A JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1EC7 JUMP INVALID PUSH16 0x776E65722063616E6E6F742062652073 PUSH6 0x7420746F207A PUSH6 0x726F20616464 PUSH19 0x6573736E6F6E2D6D61746368696E672070656E PUSH5 0x696E672077 PUSH9 0x6974656C6973742068 PUSH2 0x7368 LOG2 PUSH6 0x627A7A723158 KECCAK256 0xC8 DUP5 DELEGATECALL CODESIZE 0x2F CALLER SWAP1 SAR PUSH20 0x6F909BD6AEE12CCEE90702059E7FBBC13739643E 0xA9 0xC7 RETURN PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "2400:8868:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2400:8868:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3935:677;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3935:677:31;;:::i;:::-;;2749:94:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;3121:38:31;;;:::i;8339:124::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8339:124:31;;;;;;;;;;;;;;;;;2937:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2937:44:31;-1:-1:-1;;;;;2937:44:31;;:::i;8160:126::-;;;:::i;5562:1117::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5562:1117:31;;:::i;10379:673::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10379:673:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10379:673:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10379:673:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10379:673:31;;-1:-1:-1;10379:673:31;-1:-1:-1;10379:673:31;:::i;3119:306:26:-;;;:::i;1695:89:25:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1695:89:25;;;;;;;;;;;;;;9544:711:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9544:711:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9544:711:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9544:711:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9544:711:31;;-1:-1:-1;9544:711:31;-1:-1:-1;9544:711:31;:::i;3508:85:26:-;;;:::i;1823:809::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1823:809:26;;;;;;;;;;:::i;3208:26:31:-;;;:::i;6748:1358::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6748:1358:31;;:::i;11121:145::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11121:145:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11121:145:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11121:145:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11121:145:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11121:145:31;;-1:-1:-1;11121:145:31;;-1:-1:-1;;;;;11121:145:31:i;:::-;;;;;;;;;;;;;;;;4680:659;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4680:659:31;;:::i;2987:31::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2987:31:31;;:::i;3165:37::-;;;:::i;1778:95:24:-;;;:::i;8594:827:31:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8594:827:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8594:827:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8594:827:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8594:827:31;;-1:-1:-1;8594:827:31;-1:-1:-1;8594:827:31;:::i;3935:677::-;1608:20;1617:10;1608:8;:20::i;:::-;:49;;;;1632:25;1646:10;1632:13;:25::i;:::-;1600:84;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;;;;4082:26;;;;4074:60;;;;;-1:-1:-1;;;4074:60:31;;;;;;;;;;;;-1:-1:-1;;;4074:60:31;;;;;;;;;;;;;;;4256:40;4270:25;4256:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4256:40:31;;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4247:5;:49;4239:97;;;;-1:-1:-1;;;4239:97:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4382:32;4389:25;;4382:32;:::i;:::-;4471:26;:34;;-1:-1:-1;;4471:34:31;;;4560:45;;;4587:10;4560:45;;;;;;;;;;;;;;;;;;;;;3935:677;:::o;2749:94:26:-;2821:15;;-1:-1:-1;;;2821:15:26;;;;2749:94;;:::o;3121:38:31:-;;;;;;:::o;8339:124::-;8397:16;8432:24;8425:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8425:31:31;;;;;;;;;;;;;;;;;;;;;;;8339:124;:::o;2937:44::-;;;;;;;;;;;;;;;:::o;8160:126::-;8219:16;8254:25;8247:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8247:32:31;;;;;;;;;;;;;;;;;;;;;;8160:126;:::o;5562:1117::-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;5720:26:31;;;;5712:60;;;;;-1:-1:-1;;;5712:60:31;;;;;;;;;;;;-1:-1:-1;;;5712:60:31;;;;;;;;;;;;;;;5894:40;5908:25;5894:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5894:40:31;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;5885:5;:49;5877:97;;;;-1:-1:-1;;;5877:97:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6029:9;6024:383;6048:25;:32;6044:36;;6024:383;;;6156:12;:42;6169:25;6195:1;6169:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6169:28:31;6156:42;;;;;;;;;;;;;;;6151:246;;6311:4;6266:12;:42;6279:25;6305:1;6279:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6279:28:31;6266:42;;;;;;;;;;;;:49;;-1:-1:-1;;6266:49:31;;;;;;;;;;6353:25;:28;;6333:14;;6353:25;6379:1;;6353:28;;;;;;;;;;;;;;;;;;27:10:-1;;6353:28:31;23:18:-1;;45:23;;6333:49:31;;;;;;;;;;-1:-1:-1;;;;;;6333:49:31;-1:-1:-1;;;;;6353:28:31;;;6333:49;;;;;;6151:246;6082:3;;6024:383;;;;6457:55;6474:10;6486:25;6457:55;;;;-1:-1:-1;;;;;6457:55:31;-1:-1:-1;;;;;6457:55:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6457:55:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6558:32;6565:25;;6558:32;:::i;:::-;-1:-1:-1;6638:26:31;:34;;-1:-1:-1;;6638:34:31;;;5562:1117::o;10379:673::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;3774:26;;;;3773:27;:57;;;;-1:-1:-1;3805:25:31;;;;;;;3804:26;3773:57;3765:98;;;;;-1:-1:-1;;;3765:98:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;10564:14;;;;;;;10556:52;;;;;-1:-1:-1;;;10556:52:31;;;;;;;;;;;;-1:-1:-1;;;10556:52:31;;;;;;;;;;;;;;;10686:21;10678:49;;;;;-1:-1:-1;;;10678:49:31;;;;;;;;;;;;-1:-1:-1;;;10678:49:31;;;;;;;;;;;;;;;10805:37;:24;10832:10;;10805:37;:::i;:::-;-1:-1:-1;10896:25:31;:32;;-1:-1:-1;;10896:32:31;;;;;11019:25;;;;;;;;;;;;;;;;;;10981:64;;11007:10;;;;11019:25;;11007:10;;;;;;11019:25;;;11007:10;;11019:25;11007:10;11019:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;11019:13:31;;-1:-1:-1;;;11019:25:31:i;:::-;10981:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10981:64:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10981:64:31;;;;-1:-1:-1;10981:64:31;;-1:-1:-1;;;;;10981:64:31;10379:673;;:::o;3119:306:26:-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;3240:15;;-1:-1:-1;;;3240:15:26;;;;3232:57;;;;;-1:-1:-1;;;3232:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;3343:6;:19;;-1:-1:-1;;;;;;3343:19:26;;;3378:40;;;3360:1;3378:40;;;;;;;;;;;;;;;;;;;;3119:306::o;1695:89:25:-;1765:12;;-1:-1:-1;;;;;1765:12:25;1695:89;:::o;9544:711:31:-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;3774:26;;;;3773:27;:57;;;;-1:-1:-1;3805:25:31;;;;;;;3804:26;3773:57;3765:98;;;;;-1:-1:-1;;;3765:98:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;9676:10;;3333:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3405:204:31;3429:10;:17;3425:1;:21;3405:204;;;3476:23;3485:10;3496:1;3485:13;;;;;;;;;;;;;;3476:8;:23::i;:::-;3475:24;3467:59;;;;;-1:-1:-1;;;3467:59:31;;;;;;;;;;;;-1:-1:-1;;;3467:59:31;;;;;;;;;;;;;;;3573:1;-1:-1:-1;;;;;3548:27:31;:10;3559:1;3548:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3548:27:31;;;3540:58;;;;;-1:-1:-1;;;3540:58:31;;;;;;;;;;;;-1:-1:-1;;;3540:58:31;;;;;;;;;;;;;;;3448:3;;3405:204;;;-1:-1:-1;9766:14:31;;;;;;;9758:52;;;;;-1:-1:-1;;;9758:52:31;;;;;;;;;;;;-1:-1:-1;;;9758:52:31;;;;;;;;;;;;;;;9881:21;9873:49;;;;;-1:-1:-1;;;9873:49:31;;;;;;;;;;;;-1:-1:-1;;;9873:49:31;;;;;;;;;;;;;;;10005:38;:25;10033:10;;10005:38;:::i;:::-;-1:-1:-1;10097:26:31;:33;;-1:-1:-1;;10097:33:31;10126:4;10097:33;;;10222:25;;;;;;;;;;;;;;;;;;10183:65;;10210:10;;;;10222:25;;10210:10;;;;;;10222:25;;;10210:10;;10222:25;10210:10;10222:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10222:13:31;;-1:-1:-1;;;10222:25:31:i;:::-;10183:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10183:65:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10183:65:31;;;;-1:-1:-1;10183:65:31;;-1:-1:-1;;;;;10183:65:31;3873:1;9544:711;;:::o;3508:85:26:-;3580:6;;-1:-1:-1;;;;;3580:6:26;3508:85;:::o;1823:809::-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;1988:15;;-1:-1:-1;;;1988:15:26;;;;1980:57;;;;;-1:-1:-1;;;1980:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:22:26;;2110:70;;;;-1:-1:-1;;;2110:70:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:15;:31;;-1:-1:-1;;;;2265:31:26;-1:-1:-1;;;2265:31:26;;;;;;;;2375:75;;2414:25;;;-1:-1:-1;;;;;2414:25:26;;;;;;;;;;;;;;;2375:75;2531:6;;2510:38;;;-1:-1:-1;;;;;2531:6:26;;;2510:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2608:6:26;:17;;-1:-1:-1;;;;;;2608:17:26;-1:-1:-1;;;;;2608:17:26;;;;;;;;;;1823:809::o;3208:26:31:-;;;;;;;;;:::o;6748:1358::-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;6935:25:31;;;;;;;6927:59;;;;;-1:-1:-1;;;6927:59:31;;;;;;;;;;;;-1:-1:-1;;;6927:59:31;;;;;;;;;;;;;;;7107:39;7121:24;7107:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7107:39:31;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;7098:5;:48;7090:96;;;;-1:-1:-1;;;7090:96:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7238:9;7233:601;7257:24;:31;7253:35;;7233:601;;;7347:12;:41;7360:24;7385:1;7360:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7360:27:31;7347:41;;;;;;;;;;;;;;;7343:481;;;7452:5;7408:12;:41;7421:24;7446:1;7421:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7421:27:31;7408:41;;;;;;;;;;;;:49;;-1:-1:-1;;7408:49:31;;;;;;;;;;;7475:294;7499:14;:21;:28;;7525:1;7499:28;:25;:28;:::i;:::-;7495:1;:32;7475:294;;;7581:24;7606:1;7581:27;;;;;;;;;;;;;;;;;;7560:14;:17;;-1:-1:-1;;;;;7581:27:31;;;;7575:1;;7560:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7560:17:31;:48;7556:195;;;7656:14;7671:21;;-1:-1:-1;;7671:25:31;;;7656:41;;;;;;;;;;;;;;;;7636:14;:17;;-1:-1:-1;;;;;7656:41:31;;;;7651:1;;7636:17;;;;;;;;;;;;;;:61;;;;;-1:-1:-1;;;;;7636:61:31;;;;;-1:-1:-1;;;;;7636:61:31;;;;;;7723:5;;7556:195;7529:3;;7475:294;;;-1:-1:-1;7786:14:31;:23;;;;;-1:-1:-1;;7786:23:31;;;:::i;:::-;;7343:481;7290:3;;7233:601;;;;7883:58;7904:10;7916:24;7883:58;;;;-1:-1:-1;;;;;7883:58:31;-1:-1:-1;;;;;7883:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7883:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7987:31;7994:24;;7987:31;:::i;:::-;-1:-1:-1;8066:25:31;:33;;-1:-1:-1;;8066:33:31;;;6748:1358::o;11121:145::-;11194:7;11247:10;11230:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11230:28:31;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11230:28:31;;;11220:39;;;;;;11213:46;;11121:145;;;:::o;4680:659::-;1608:20;1617:10;1608:8;:20::i;:::-;:49;;;;1632:25;1646:10;1632:13;:25::i;:::-;1600:84;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;;;;4826:25;;;;;;;4818:59;;;;;-1:-1:-1;;;4818:59:31;;;;;;;;;;;;-1:-1:-1;;;4818:59:31;;;;;;;;;;;;;;;4998:39;5012:24;4998:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4998:39:31;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;4989:5;:48;4981:96;;;;-1:-1:-1;;;4981:96:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5123:31;5130:24;;5123:31;:::i;:::-;5200:25;:33;;-1:-1:-1;;5200:33:31;;;5288:44;;;5314:10;5288:44;;;;;;;;;;;;;;;;;;;;;4680:659;:::o;2987:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2987:31:31;;-1:-1:-1;2987:31:31;:::o;3165:37::-;;;;;;;;;:::o;1778:95:24:-;1851:15;;1778:95;:::o;8594:827:31:-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;8696:10;;3333:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3405:204:31;3429:10;:17;3425:1;:21;3405:204;;;3476:23;3485:10;3496:1;3485:13;;;;;;;3476:23;3475:24;3467:59;;;;;-1:-1:-1;;;3467:59:31;;;;;;;;;;;;-1:-1:-1;;;3467:59:31;;;;;;;;;;;;;;;3573:1;-1:-1:-1;;;;;3548:27:31;:10;3559:1;3548:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3548:27:31;;;3540:58;;;;;-1:-1:-1;;;3540:58:31;;;;;;;;;;;;-1:-1:-1;;;3540:58:31;;;;;;;;;;;;;;;3448:3;;3405:204;;;-1:-1:-1;8791:14:31;;;;;;;8790:15;8782:49;;;;;-1:-1:-1;;;8782:49:31;;;;;;;;;;;;-1:-1:-1;;;8782:49:31;;;;;;;;;;;;;;;8910:9;8905:384;8925:21;;;8905:384;;;9035:12;:27;9048:10;;9059:1;9048:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9048:13:31;9035:27;;-1:-1:-1;9035:27:31;;;;;;;;-1:-1:-1;9035:27:31;;;;9030:249;;9161:4;9131:12;:27;9144:10;;9155:1;9144:13;;;;;;;;;;;;;-1:-1:-1;;;;;9144:13:31;-1:-1:-1;;;;;9131:27:31;-1:-1:-1;;;;;9131:27:31;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9230:14;9250:10;;9261:1;9250:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9230:34:31;;;9250:13;9230:34;;;;;;;-1:-1:-1;;;;;;9230:34:31;-1:-1:-1;;;;;9250:13:31;;;;;;;;;;;;;9230:34;;;;;;-1:-1:-1;9030:249:31;8948:3;;8905:384;;;-1:-1:-1;9298:14:31;:21;;-1:-1:-1;;9298:21:31;;;;;9370:44;;;9387:10;9370:44;;;;;;;;;9399:14;9370:44;;;;;;;;;;9387:10;;9399:14;;9370:44;;;;;;;9399:14;;9370:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9370:44:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:1;8594:827;;:::o;4191:107:26:-;4285:6;;-1:-1:-1;;;;;4285:6:26;;;4273:18;;;;4191:107::o;2393:158:24:-;2457:4;2492:28;2504:15;;2492:11;:28::i;:::-;-1:-1:-1;;;;;2480:54:24;;2535:8;2480:64;;;;;;;;;;;;;-1:-1:-1;;;;;2480:64:24;-1:-1:-1;;;;;2480:64:24;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2480:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2480:64:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2480:64:24;;2393:158;-1:-1:-1;;2393:158:24:o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1971:165:25:-;1549:12;;2042:7;;-1:-1:-1;;;;;1549:12:25;1541:68;;;;;-1:-1:-1;;;1541:68:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:12;;2083:33;;;-1:-1:-1;;;2083:33:25;;;;;;;;;;-1:-1:-1;;;;;2087:12:25;;;;2083:26;;:33;;;;;;;;;;;;;;;2087:12;2083:33;;;5:2:-1;;;;30:1;27;20:12;5:2;2083:33:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2083:33:25;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2083:33:25;2068:61;;;-1:-1:-1;;;2068:61:25;;;;;;;;;;-1:-1:-1;;;;;2068:54:25;;;;;;:61;;;;;2083:33;;2068:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2400:8868:31;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2400:8868:31;-1:-1:-1;;;;;2400:8868:31;;;;;;;;;;;;;;;;;;;-1:-1:-1;2400:8868:31;;;-1:-1:-1;2400:8868:31;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2400:8868:31;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "1606400", + "executionCost": "42522", + "totalCost": "1648922" + }, + "external": { + "calculateHash(address[])": "infinite", + "cancelWhitelistAddition(bytes32)": "infinite", + "cancelWhitelistRemoval(bytes32)": "infinite", + "confirmWhitelistAddition(bytes32)": "infinite", + "confirmWhitelistRemoval(bytes32)": "infinite", + "controllerNode()": "1108", + "ensRegistry()": "1148", + "isSetWhitelist()": "1110", + "isTransferable()": "1074", + "owner()": "1082", + "pendingWhitelistAddition()": "infinite", + "pendingWhitelistRemoval()": "infinite", + "renounceOwnership()": "24122", + "setWhitelist(address[])": "infinite", + "submitWhitelistAddition(address[])": "infinite", + "submitWhitelistRemoval(address[])": "infinite", + "submittedWhitelistAddition()": "1078", + "submittedWhitelistRemoval()": "1109", + "transferOwnership(address,bool)": "infinite", + "whitelistArray(uint256)": "2036", + "whitelistMap(address)": "1248" + } + }, + "methodIdentifiers": { + "calculateHash(address[])": "cd7958dd", + "cancelWhitelistAddition(bytes32)": "100f23fd", + "cancelWhitelistRemoval(bytes32)": "ce0b5bd5", + "confirmWhitelistAddition(bytes32)": "5adc02ab", + "confirmWhitelistRemoval(bytes32)": "cbd2ac68", + "controllerNode()": "e2b4ce97", + "ensRegistry()": "7d73b231", + "isSetWhitelist()": "be40ba79", + "isTransferable()": "2121dc75", + "owner()": "8da5cb5b", + "pendingWhitelistAddition()": "47b55a9d", + "pendingWhitelistRemoval()": "294f4025", + "renounceOwnership()": "715018a6", + "setWhitelist(address[])": "f4217648", + "submitWhitelistAddition(address[])": "7fd004fa", + "submitWhitelistRemoval(address[])": "6137d670", + "submittedWhitelistAddition()": "26d05ab2", + "submittedWhitelistRemoval()": "de212bf3", + "transferOwnership(address,bool)": "b242e534", + "whitelistArray(uint256)": "d251fefc", + "whitelistMap(address)": "32531c3c" + } + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "AddedToWhitelist", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CancelledWhitelistAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CancelledWhitelistRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "RemovedFromWhitelist", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "SubmittedWhitelistAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "SubmittedWhitelistRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "calculateHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "cancelWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "cancelWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "confirmWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "confirmWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isSetWhitelist", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "pendingWhitelistAddition", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "pendingWhitelistRemoval", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "setWhitelist", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "submitWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "submitWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "submittedWhitelistAddition", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "submittedWhitelistRemoval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "whitelistArray", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "whitelistMap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/artifacts/AddressWhitelist_metadata.json b/contracts/artifacts/AddressWhitelist_metadata.json new file mode 100644 index 00000000..06cf8d9f --- /dev/null +++ b/contracts/artifacts/AddressWhitelist_metadata.json @@ -0,0 +1,825 @@ +{ + "compiler": { + "version": "0.5.17+commit.d19bba13" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "AddedToWhitelist", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CancelledWhitelistAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CancelledWhitelistRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "RemovedFromWhitelist", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "SubmittedWhitelistAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "SubmittedWhitelistRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "calculateHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "cancelWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "cancelWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "confirmWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "confirmWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isSetWhitelist", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "pendingWhitelistAddition", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "pendingWhitelistRemoval", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "setWhitelist", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "submitWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "submitWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "submittedWhitelistAddition", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "submittedWhitelistRemoval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "whitelistArray", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "whitelistMap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "This contract will allow the user to maintain a whitelist of addressesThese addresses will live outside of the various spend limits", + "methods": { + "calculateHash(address[])": { + "details": "Method used to hash our whitelist address arrays." + }, + "cancelWhitelistAddition(bytes32)": { + "details": "Cancel pending whitelist addition." + }, + "cancelWhitelistRemoval(bytes32)": { + "details": "Cancel pending removal of whitelisted addresses." + }, + "confirmWhitelistAddition(bytes32)": { + "details": "Confirm pending whitelist addition.This will only ever be applied post 2FA, by one of the Controllers", + "params": { + "_hash": "is the hash of the pending whitelist array, a form of lamport lock" + } + }, + "confirmWhitelistRemoval(bytes32)": { + "details": "Confirm pending removal of whitelisted addresses." + }, + "controllerNode()": { + "return": "the controller node registered in ENS." + }, + "ensRegistry()": { + "return": "Current address of the ENS registry contract." + }, + "isTransferable()": { + "return": "true if the ownership is transferable." + }, + "owner()": { + "return": "address of the owner." + }, + "pendingWhitelistAddition()": { + "details": "Getter for pending addition array." + }, + "pendingWhitelistRemoval()": { + "details": "Getter for pending removal array." + }, + "renounceOwnership()": { + "details": "Renouncing to ownership will leave the contract without an owner and unusable.It will not be possible to call the functions with the `onlyOwner` modifier anymore." + }, + "setWhitelist(address[])": { + "details": "Add initial addresses to the whitelist.", + "params": { + "_addresses": "are the Ethereum addresses to be whitelisted." + } + }, + "submitWhitelistAddition(address[])": { + "details": "Add addresses to the whitelist.", + "params": { + "_addresses": "are the Ethereum addresses to be whitelisted." + } + }, + "submitWhitelistRemoval(address[])": { + "details": "Remove addresses from the whitelist.", + "params": { + "_addresses": "are the Ethereum addresses to be removed." + } + }, + "transferOwnership(address,bool)": { + "params": { + "_account": "address to transfer ownership to.", + "_transferable": "indicates whether to keep the ownership transferable." + } + } + }, + "title": "AddressWhitelist provides payee-whitelist functionality." + }, + "userdoc": { + "methods": { + "isTransferable()": { + "notice": "check if the ownership is transferable." + }, + "owner()": { + "notice": "Find out owner address" + }, + "renounceOwnership()": { + "notice": "Allows the current owner to relinquish control of the contract." + }, + "transferOwnership(address,bool)": { + "notice": "Allows the current owner to transfer control of the contract to a new address." + } + } + } + }, + "settings": { + "compilationTarget": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": "AddressWhitelist" + }, + "evmVersion": "istanbul", + "libraries": {}, + "optimizer": { + "enabled": true, + "runs": 200 + }, + "remappings": [] + }, + "sources": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/controller.sol": { + "keccak256": "0xb68e6d7092e8e9b3a914aea22172dce9c26dfa9805ba819958b5b8dde7dfd50f", + "urls": [ + "bzz-raw://a1cdba6a1bfc923815b2c1116327c1951ecf40ea8c67ae2456e1c4c50217eb61", + "dweb:/ipfs/QmX4rCEuMEBg6X3cpKdjTtxgNYBrCJyyA51KRR8vbE6sDF" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": { + "keccak256": "0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1", + "urls": [ + "bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf", + "dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ECDSA.sol": { + "keccak256": "0xfc3dde0661847b56e4ff8926be7e4cde9d960cbe18480e01ee648cfbf5d4055a", + "urls": [ + "bzz-raw://d8747b09cbf2ee6d96d21a990fcf326f08084c79fcfad5ed331d64b5705487d9", + "dweb:/ipfs/QmPsy6pKdNtGndw5PMRAXEQ8pVKEMuLvAbgxffZ9cXL4T1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC165.sol": { + "keccak256": "0xaca91baae00478feaafaedff2fc8ebd3d6738c7877ad78d9565ef328f683f4e8", + "urls": [ + "bzz-raw://c55b05166c731d830498a2dd576c6b19ba114e73eb5011dc684f368cb84c5216", + "dweb:/ipfs/QmVyYr64yP1aqFvhBSZeJtzMaPdLyF9w8pytudogFWKtur" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC20.sol": { + "keccak256": "0x54628c1175e0e40ff56df85e92bd9b4e5ee1614600713379ff885bd07f6ef010", + "urls": [ + "bzz-raw://2a0a4531eb59752b7c3315f3c796d2ce2befb0d21eca1908eb94f44873e458de", + "dweb:/ipfs/QmbrqZGUQZaSpYndb9eQ9WVEeboRBHaomma91tpD4ESWeE" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeERC20.sol": { + "keccak256": "0xa654c1247c418db9eb3034e5b795760d2048864625f509a0e81632351e4199c0", + "urls": [ + "bzz-raw://3798f03a8e74dcf0c90072c3f88ccc8be887b9fd9707b063e4c47df0a610478b", + "dweb:/ipfs/QmSaY9ZKzihx5GC3h9XiUmBpQbwhRQw93yasRqxp45cXBJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeMath.sol": { + "keccak256": "0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690", + "urls": [ + "bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610", + "dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENS.sol": { + "keccak256": "0x5d115f126a237cfccc6c687301f87bf3210b7f68594ef780d796caa6e72d6060", + "urls": [ + "bzz-raw://6ca3f8dbd17933dd487c532fcfddc42ec7b46f7ccc84cfcb266cbf8bf453758c", + "dweb:/ipfs/QmcrckQwvrffFdSgrC5txQw5xNruAVtkDQ2aj9V1MtVwKD" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENSBytesUtils.sol": { + "keccak256": "0xe9599418173f34cc89c737059f398ba9a9f5e8a44c67af218bb3373c589f3499", + "urls": [ + "bzz-raw://b20acd1d67c676364e862f4cecdcfc4ade3efc22445fb6fda4a801f6d865bde1", + "dweb:/ipfs/QmW2EP3T1y6kLtfB2rZFhqFBFWzUthvC1DZWzTfVLehPsy" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/PublicResolver.sol": { + "keccak256": "0xdc5767dd5f4c192c3085e89bcc3ab791ab4e3e082f03bfdca1e48f75a0ce72aa", + "urls": [ + "bzz-raw://d4cd247165490f08c6903e99dd86f8a6d279763b0a79660e544a7b8ae0e071dd", + "dweb:/ipfs/QmRyepaRuSLF8QNkV5QSwoTtc6BjX3Kr7KP8GQuCtWp1MH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/RRUtils.sol": { + "keccak256": "0x7be2b14a352eda9d632f2969e8ae00e6e2bf8cb286a0e1d9c3fb2af0b9d2d799", + "urls": [ + "bzz-raw://df3a4d1fb8e19407921d1dfe3a1b8029eb4dd7321f8dc66e16bb97590ce6ff3b", + "dweb:/ipfs/QmV2UTNqJAhiAGBYjUMZYuvvWpj43WC3VpZivmW3LSpfdc" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ResolverBase.sol": { + "keccak256": "0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8", + "urls": [ + "bzz-raw://dc477afd53175b96112bb0e2e25ce85b1f7c0e3fe0da4a2e8539d86712583b00", + "dweb:/ipfs/QmQdwwHEcNMxTWtkrNpkbxtokwiFDdQ5xwPYcuZPRbJQKp" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ABIResolver.sol": { + "keccak256": "0x794514d39c469bab511822ca7a1a7a7838dca338499889896c7dac4303c30c1f", + "urls": [ + "bzz-raw://3668c3ec6be58cf6bbbe2cfcb8e286927fa5ab028d501c8b26d2eeb816ce7303", + "dweb:/ipfs/Qme7RMhhcFxa1xzhJz24s3rdW2VePsPdJhFgQbAiieMjKz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/AddrResolver.sol": { + "keccak256": "0x4d6a95626f02bfc6e5ee75cde2a38e67e9eb9aada78473e05b7003ebd60d8ffb", + "urls": [ + "bzz-raw://45407b2f99a29d0cc3df3636ecc5316414d6eb855860e382dffa57329886d74a", + "dweb:/ipfs/QmaKTuaHdy7ADgPY718fsiwjn2Hd6dqxPtgRcwjNxtdunG" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ContentHashResolver.sol": { + "keccak256": "0xaa3d9b9baae36fbf831b8297832b54ffd1023b9ac508f2c5068b92ce0c30edfc", + "urls": [ + "bzz-raw://a30f83bbf8d55051bdc0b151131e5dca4966fe87f36648f9bf3e580d81d85fa2", + "dweb:/ipfs/QmbWeakvTkEJTRxqFL6wZPDdN6Wqq1tSgCJiu861UbH3yH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/DNSResolver.sol": { + "keccak256": "0x348116b6a303561102f057b89ce14b1bdc5a254c701380cdb1c682adf7e0f749", + "urls": [ + "bzz-raw://8cc58072164c74bf520a061918c422554097134f74854f0b3e1093ba36798f24", + "dweb:/ipfs/QmSsDaHZSjjNZVzbmkxhAKNkjpWMKtMKEVh9cLbskW4NJn" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/InterfaceResolver.sol": { + "keccak256": "0x6398dc59dd38501acd6a716173793e84aa1c454c3e21c190e10ddbe54dd8be41", + "urls": [ + "bzz-raw://7b3af5c29db8d4c13631b3ec427e5dc6dee1a5df0560d36b32deda2451e4bc11", + "dweb:/ipfs/QmXe2sWt31kEELa4VPU84QUUK6UDw6mQANc9gMVezoqioP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/NameResolver.sol": { + "keccak256": "0xcff06da8901397164ca9bea36361ac518fb62cd5283d2e2e835e006980ba4d16", + "urls": [ + "bzz-raw://ab5b2748d4297385b92a83aafdc79fc343842ee71e9537fa9c8cf4d2fbd4aeb0", + "dweb:/ipfs/QmZzZYyiRxZU271QDKhL4F4VdCfx5dZq4fT9Ud786XtiZz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/PubkeyResolver.sol": { + "keccak256": "0xaa10a8a7e1579987b6781657153ae3f16806f240b3ffaa54ea1f303f7cb7a74a", + "urls": [ + "bzz-raw://3ee3cbb2cca361819cea208485c718a3288cf9dc22762bb08c3dc445b60dc862", + "dweb:/ipfs/QmeXyPzZHyPMSHvQPDsCtjdC3rMCTzZNWeYXaWqiDbdmSt" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/TextResolver.sol": { + "keccak256": "0xdfb11cd7e9aef793d88c517195a6d3ac4736aa2aa7f27baafc2541bb2c639774", + "urls": [ + "bzz-raw://84b3d3a186a91c242a729be0da2ad1b705a332472cea0c81d81d4b8e309f3440", + "dweb:/ipfs/QmQTKAyoS6DEUUNVKb5aECk3GBGb7AZNGSV4untv1ZNngi" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/initializable.sol": { + "keccak256": "0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721", + "urls": [ + "bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f", + "dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/strings.sol": { + "keccak256": "0xd7c99d0733e73dc27cba285890b254d36d070807da9e60a573dcc4b5ec3c6f3d", + "urls": [ + "bzz-raw://95845b2178b081aa0ad872f04694fd87f9553d0f78b8e079ce98773dbafc9033", + "dweb:/ipfs/QmPsNebBo51KzdM7ewAPJ5weCL7J5Piy2y1Hgcto2TmvDP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/balanceable.sol": { + "keccak256": "0x5a1c23a4b3afdad849f0639bac47e8c08c1949f0aa531113e06883f9a7ab6662", + "urls": [ + "bzz-raw://a9e6c391948533011c757d89a67cdcc6a741afa7e1c242138c591594d3a3238c", + "dweb:/ipfs/QmfPoN9Dv2AuPBcY1nAdByMAuW1Z7Wj4CnRW3KnRLtiuQM" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/bytesUtils.sol": { + "keccak256": "0x4ea4f266580ca57be6ec7b0d2fe6adb0bf51f978648c3aa65e8d02fe91351522", + "urls": [ + "bzz-raw://b3badb0e0c1dd6b21249852eb2b8fcdd2adffb2aa663926b51241d8eb06d2857", + "dweb:/ipfs/QmRvKPafRARyjdq5duZwx55cxUL4Vi8qvXo5HmQDt5Sq3s" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/controllable.sol": { + "keccak256": "0x8245bddc77a7c5b44dc7f285404193e47b951e9cbba12a765828cb3023f64336", + "urls": [ + "bzz-raw://df426810c455bccd40f5976a2906382e35800fe47e45a1991b4c3684827dd5ad", + "dweb:/ipfs/QmfMrmV9xYTy6NfFnWR4Y29qRzgU8wmiNjkbnYoFUw8YK6" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ensResolvable.sol": { + "keccak256": "0xddb1c7898472491906ebfa73b4c83f8bc946ff3e94e5c8814fe6ea063f3fb665", + "urls": [ + "bzz-raw://7911bc8eb24a89b0eb0e088de4399083af7b2761cce12cd622db715e46994897", + "dweb:/ipfs/QmTz3SyAoGFDopiJuFRES7x155hNFWLF6d9yctJhdNx9m5" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ownable.sol": { + "keccak256": "0x42429c64258acf6e8018aca4fb048760aba8c26e8256d7b7b93be6d542ad8726", + "urls": [ + "bzz-raw://d617ddff648eaffe0b13519b85c1405ed4b57c3a5329d2c950f06485b0f730a3", + "dweb:/ipfs/QmdgX3w1b5psWWEQzRRQ1j2Ej7NNQC1bWxc95YJJFay9f1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/tokenWhitelistable.sol": { + "keccak256": "0x6f0e7922c0be342960f7d3ff610ea3e6e46aa76e1f73f1ff6a529e352532f0a8", + "urls": [ + "bzz-raw://024bf0b3b2df1c5af6cfcd2aa6f281b98b48408b32ac400246a629e539e81ffe", + "dweb:/ipfs/QmNMb6C7a9pzcU7Gu48RBMcV3L3CitpjPiGC3zvNe9wnMj" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/transferrable.sol": { + "keccak256": "0x5f215d0f4f446f068e3948a7b5cf4dd621f4e9c4ba45047b95c4b7ad4c02765d", + "urls": [ + "bzz-raw://cda044581d476790ed11a5f8fb7ccc978e30b8649efa0132f0c701cdf30c2cb0", + "dweb:/ipfs/QmR4oKPAQyfV3wCtsuqT5V2D3BZvsgxV5Wufn5vtAH5ZkJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/licence.sol": { + "keccak256": "0x6adf2a5bc0e6bb1b53ce1a7085b7e10573d8ca6297f5f34e606ccaa4b3079a1c", + "urls": [ + "bzz-raw://d90d7cd882d355a1aec7d88c1bfe8eed85ee30b8ff7f101f7ef1fb4501e700c1", + "dweb:/ipfs/Qmdz8Fzpj9cE8msmcBUEP18KLfrjnvSdFjDf9yxAcCt1KY" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/tokenWhitelist.sol": { + "keccak256": "0x560b9284f40382c95ab64856a7acfd53eb416593053a40cf9f6fe229e08372a0", + "urls": [ + "bzz-raw://e2a217afa376bcb0d901937b52995a33f3ea16dff7e76691b20e761802e4a14b", + "dweb:/ipfs/QmZJhPn8zTtBBE2RQvWLA7FzGLsdbxDcRkMCKiyCw6ypQr" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": { + "keccak256": "0xdb84a948b1cd2f957eb445c541bf7689209c34dbab08ebce9faa0ddfb4aeb47b", + "urls": [ + "bzz-raw://bda80e1f7779ce8582edf170ec8b4d568e1a1f9ab0e171708f39afc0c272e1b3", + "dweb:/ipfs/QmNyeVpgs7ii3bGNbrM1B1yCz1Xs4DwcWKp8DgUm9vz241" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/artifacts/ControllableOwnable.json b/contracts/artifacts/ControllableOwnable.json new file mode 100644 index 00000000..6e05786e --- /dev/null +++ b/contracts/artifacts/ControllableOwnable.json @@ -0,0 +1,205 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "görli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b50610459806100656000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632121dc7514610067578063715018a6146100835780637d73b2311461008d5780638da5cb5b146100b1578063b242e534146100b9578063e2b4ce97146100e7575b600080fd5b61006f610101565b604080519115158252519081900360200190f35b61008b610111565b005b61009561020f565b604080516001600160a01b039092168252519081900360200190f35b61009561021e565b61008b600480360360408110156100cf57600080fd5b506001600160a01b038135169060200135151561022d565b6100ef6103e7565b60408051918252519081900360200190f35b603554600160a01b900460ff1690565b61011a336103ed565b610164576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166101c2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b6035546001600160a01b031690565b610236336103ed565b610280576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166102de576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166103235760405162461bcd60e51b81526004018080602001828103825260238152602001806104026023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061037c57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b60345490565b6035546001600160a01b039081169116149056fe6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a723158200dcdbc78ca5b222781e7d9a7753108a2790dfba65254c7feeb9b89fb87c6748164736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH15 0xC2E074EC69A0DFB2997BA6C7D2E1E OR SWAP1 SSTORE PUSH32 0x7F2CE995617D2816B426C5C8698C5EC2952F7A34BB10F38326F74933D5893697 PUSH1 0x34 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x459 DUP1 PUSH2 0x65 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x83 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0xE7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x101 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8B PUSH2 0x111 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x95 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0x21E JUMP JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x22D JUMP JUMPDEST PUSH2 0xEF PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x11A CALLER PUSH2 0x3ED JUMP JUMPDEST PUSH2 0x164 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x236 CALLER PUSH2 0x3ED JUMP JUMPDEST PUSH2 0x280 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x323 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x402 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x37C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP INVALID PUSH16 0x776E65722063616E6E6F742062652073 PUSH6 0x7420746F207A PUSH6 0x726F20616464 PUSH19 0x657373A265627A7A723158200DCDBC78CA5B22 0x27 DUP2 0xE7 0xD9 0xA7 PUSH22 0x3108A2790DFBA65254C7FEEB9B89FB87C6748164736F PUSH13 0x63430005110032000000000000 ", + "sourceMap": "1425:279:31:-;;;1311:82:25;;;-1:-1:-1;;;;;;1311:82:25;1350:42;1311:82;;;1162:66:24;1312:58;;1425:279:31;5:2:-1;;;;30:1;27;20:12;5:2;1425:279:31;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100625760003560e01c80632121dc7514610067578063715018a6146100835780637d73b2311461008d5780638da5cb5b146100b1578063b242e534146100b9578063e2b4ce97146100e7575b600080fd5b61006f610101565b604080519115158252519081900360200190f35b61008b610111565b005b61009561020f565b604080516001600160a01b039092168252519081900360200190f35b61009561021e565b61008b600480360360408110156100cf57600080fd5b506001600160a01b038135169060200135151561022d565b6100ef6103e7565b60408051918252519081900360200190f35b603554600160a01b900460ff1690565b61011a336103ed565b610164576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166101c2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b6035546001600160a01b031690565b610236336103ed565b610280576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166102de576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166103235760405162461bcd60e51b81526004018080602001828103825260238152602001806104026023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061037c57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b60345490565b6035546001600160a01b039081169116149056fe6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a723158200dcdbc78ca5b222781e7d9a7753108a2790dfba65254c7feeb9b89fb87c6748164736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x83 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0xE7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6F PUSH2 0x101 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x8B PUSH2 0x111 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x95 PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x95 PUSH2 0x21E JUMP JUMPDEST PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x22D JUMP JUMPDEST PUSH2 0xEF PUSH2 0x3E7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x11A CALLER PUSH2 0x3ED JUMP JUMPDEST PUSH2 0x164 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x236 CALLER PUSH2 0x3ED JUMP JUMPDEST PUSH2 0x280 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2DE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x323 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x402 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x37C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP INVALID PUSH16 0x776E65722063616E6E6F742062652073 PUSH6 0x7420746F207A PUSH6 0x726F20616464 PUSH19 0x657373A265627A7A723158200DCDBC78CA5B22 0x27 DUP2 0xE7 0xD9 0xA7 PUSH22 0x3108A2790DFBA65254C7FEEB9B89FB87C6748164736F PUSH13 0x63430005110032000000000000 ", + "sourceMap": "1425:279:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1425:279:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2749:94:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;3119:306;;;:::i;:::-;;1695:89:25;;;:::i;:::-;;;;-1:-1:-1;;;;;1695:89:25;;;;;;;;;;;;;;3508:85:26;;;:::i;1823:809::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1823:809:26;;;;;;;;;;:::i;1778:95:24:-;;;:::i;:::-;;;;;;;;;;;;;;;;2749:94:26;2821:15;;-1:-1:-1;;;2821:15:26;;;;;2749:94::o;3119:306::-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;3240:15;;-1:-1:-1;;;3240:15:26;;;;3232:57;;;;;-1:-1:-1;;;3232:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;3343:6;:19;;-1:-1:-1;;;;;;3343:19:26;;;3378:40;;;3360:1;3378:40;;;;;;;;;;;;;;;;;;;;3119:306::o;1695:89:25:-;1765:12;;-1:-1:-1;;;;;1765:12:25;1695:89;:::o;3508:85:26:-;3580:6;;-1:-1:-1;;;;;3580:6:26;3508:85;:::o;1823:809::-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;1988:15;;-1:-1:-1;;;1988:15:26;;;;1980:57;;;;;-1:-1:-1;;;1980:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:22:26;;2110:70;;;;-1:-1:-1;;;2110:70:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:15;:31;;-1:-1:-1;;;;2265:31:26;-1:-1:-1;;;2265:31:26;;;;;;;;2375:75;;2414:25;;;-1:-1:-1;;;;;2414:25:26;;;;;;;;;;;;;;;2375:75;2531:6;;2510:38;;;-1:-1:-1;;;;;2531:6:26;;;2510:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2608:6:26;:17;;-1:-1:-1;;;;;;2608:17:26;-1:-1:-1;;;;;2608:17:26;;;;;;;;;;1823:809::o;1778:95:24:-;1851:15;;1778:95;:::o;4191:107:26:-;4285:6;;-1:-1:-1;;;;;4285:6:26;;;4273:18;;;;4191:107::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "222600", + "executionCost": "41105", + "totalCost": "263705" + }, + "external": { + "controllerNode()": "1086", + "ensRegistry()": "1059", + "isTransferable()": "1005", + "owner()": "1081", + "renounceOwnership()": "24033", + "transferOwnership(address,bool)": "infinite" + } + }, + "methodIdentifiers": { + "controllerNode()": "e2b4ce97", + "ensRegistry()": "7d73b231", + "isTransferable()": "2121dc75", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address,bool)": "b242e534" + } + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/artifacts/ControllableOwnable_metadata.json b/contracts/artifacts/ControllableOwnable_metadata.json new file mode 100644 index 00000000..86a3f62a --- /dev/null +++ b/contracts/artifacts/ControllableOwnable_metadata.json @@ -0,0 +1,426 @@ +{ + "compiler": { + "version": "0.5.17+commit.d19bba13" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "providing an additional modifier to check if Owner or Controller", + "methods": { + "controllerNode()": { + "return": "the controller node registered in ENS." + }, + "ensRegistry()": { + "return": "Current address of the ENS registry contract." + }, + "isTransferable()": { + "return": "true if the ownership is transferable." + }, + "owner()": { + "return": "address of the owner." + }, + "renounceOwnership()": { + "details": "Renouncing to ownership will leave the contract without an owner and unusable.It will not be possible to call the functions with the `onlyOwner` modifier anymore." + }, + "transferOwnership(address,bool)": { + "params": { + "_account": "address to transfer ownership to.", + "_transferable": "indicates whether to keep the ownership transferable." + } + } + }, + "title": "ControllableOwnable combines Controllable and Ownable" + }, + "userdoc": { + "methods": { + "isTransferable()": { + "notice": "check if the ownership is transferable." + }, + "owner()": { + "notice": "Find out owner address" + }, + "renounceOwnership()": { + "notice": "Allows the current owner to relinquish control of the contract." + }, + "transferOwnership(address,bool)": { + "notice": "Allows the current owner to transfer control of the contract to a new address." + } + } + } + }, + "settings": { + "compilationTarget": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": "ControllableOwnable" + }, + "evmVersion": "istanbul", + "libraries": {}, + "optimizer": { + "enabled": true, + "runs": 200 + }, + "remappings": [] + }, + "sources": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/controller.sol": { + "keccak256": "0xb68e6d7092e8e9b3a914aea22172dce9c26dfa9805ba819958b5b8dde7dfd50f", + "urls": [ + "bzz-raw://a1cdba6a1bfc923815b2c1116327c1951ecf40ea8c67ae2456e1c4c50217eb61", + "dweb:/ipfs/QmX4rCEuMEBg6X3cpKdjTtxgNYBrCJyyA51KRR8vbE6sDF" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": { + "keccak256": "0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1", + "urls": [ + "bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf", + "dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ECDSA.sol": { + "keccak256": "0xfc3dde0661847b56e4ff8926be7e4cde9d960cbe18480e01ee648cfbf5d4055a", + "urls": [ + "bzz-raw://d8747b09cbf2ee6d96d21a990fcf326f08084c79fcfad5ed331d64b5705487d9", + "dweb:/ipfs/QmPsy6pKdNtGndw5PMRAXEQ8pVKEMuLvAbgxffZ9cXL4T1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC165.sol": { + "keccak256": "0xaca91baae00478feaafaedff2fc8ebd3d6738c7877ad78d9565ef328f683f4e8", + "urls": [ + "bzz-raw://c55b05166c731d830498a2dd576c6b19ba114e73eb5011dc684f368cb84c5216", + "dweb:/ipfs/QmVyYr64yP1aqFvhBSZeJtzMaPdLyF9w8pytudogFWKtur" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC20.sol": { + "keccak256": "0x54628c1175e0e40ff56df85e92bd9b4e5ee1614600713379ff885bd07f6ef010", + "urls": [ + "bzz-raw://2a0a4531eb59752b7c3315f3c796d2ce2befb0d21eca1908eb94f44873e458de", + "dweb:/ipfs/QmbrqZGUQZaSpYndb9eQ9WVEeboRBHaomma91tpD4ESWeE" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeERC20.sol": { + "keccak256": "0xa654c1247c418db9eb3034e5b795760d2048864625f509a0e81632351e4199c0", + "urls": [ + "bzz-raw://3798f03a8e74dcf0c90072c3f88ccc8be887b9fd9707b063e4c47df0a610478b", + "dweb:/ipfs/QmSaY9ZKzihx5GC3h9XiUmBpQbwhRQw93yasRqxp45cXBJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeMath.sol": { + "keccak256": "0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690", + "urls": [ + "bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610", + "dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENS.sol": { + "keccak256": "0x5d115f126a237cfccc6c687301f87bf3210b7f68594ef780d796caa6e72d6060", + "urls": [ + "bzz-raw://6ca3f8dbd17933dd487c532fcfddc42ec7b46f7ccc84cfcb266cbf8bf453758c", + "dweb:/ipfs/QmcrckQwvrffFdSgrC5txQw5xNruAVtkDQ2aj9V1MtVwKD" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENSBytesUtils.sol": { + "keccak256": "0xe9599418173f34cc89c737059f398ba9a9f5e8a44c67af218bb3373c589f3499", + "urls": [ + "bzz-raw://b20acd1d67c676364e862f4cecdcfc4ade3efc22445fb6fda4a801f6d865bde1", + "dweb:/ipfs/QmW2EP3T1y6kLtfB2rZFhqFBFWzUthvC1DZWzTfVLehPsy" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/PublicResolver.sol": { + "keccak256": "0xdc5767dd5f4c192c3085e89bcc3ab791ab4e3e082f03bfdca1e48f75a0ce72aa", + "urls": [ + "bzz-raw://d4cd247165490f08c6903e99dd86f8a6d279763b0a79660e544a7b8ae0e071dd", + "dweb:/ipfs/QmRyepaRuSLF8QNkV5QSwoTtc6BjX3Kr7KP8GQuCtWp1MH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/RRUtils.sol": { + "keccak256": "0x7be2b14a352eda9d632f2969e8ae00e6e2bf8cb286a0e1d9c3fb2af0b9d2d799", + "urls": [ + "bzz-raw://df3a4d1fb8e19407921d1dfe3a1b8029eb4dd7321f8dc66e16bb97590ce6ff3b", + "dweb:/ipfs/QmV2UTNqJAhiAGBYjUMZYuvvWpj43WC3VpZivmW3LSpfdc" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ResolverBase.sol": { + "keccak256": "0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8", + "urls": [ + "bzz-raw://dc477afd53175b96112bb0e2e25ce85b1f7c0e3fe0da4a2e8539d86712583b00", + "dweb:/ipfs/QmQdwwHEcNMxTWtkrNpkbxtokwiFDdQ5xwPYcuZPRbJQKp" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ABIResolver.sol": { + "keccak256": "0x794514d39c469bab511822ca7a1a7a7838dca338499889896c7dac4303c30c1f", + "urls": [ + "bzz-raw://3668c3ec6be58cf6bbbe2cfcb8e286927fa5ab028d501c8b26d2eeb816ce7303", + "dweb:/ipfs/Qme7RMhhcFxa1xzhJz24s3rdW2VePsPdJhFgQbAiieMjKz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/AddrResolver.sol": { + "keccak256": "0x4d6a95626f02bfc6e5ee75cde2a38e67e9eb9aada78473e05b7003ebd60d8ffb", + "urls": [ + "bzz-raw://45407b2f99a29d0cc3df3636ecc5316414d6eb855860e382dffa57329886d74a", + "dweb:/ipfs/QmaKTuaHdy7ADgPY718fsiwjn2Hd6dqxPtgRcwjNxtdunG" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ContentHashResolver.sol": { + "keccak256": "0xaa3d9b9baae36fbf831b8297832b54ffd1023b9ac508f2c5068b92ce0c30edfc", + "urls": [ + "bzz-raw://a30f83bbf8d55051bdc0b151131e5dca4966fe87f36648f9bf3e580d81d85fa2", + "dweb:/ipfs/QmbWeakvTkEJTRxqFL6wZPDdN6Wqq1tSgCJiu861UbH3yH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/DNSResolver.sol": { + "keccak256": "0x348116b6a303561102f057b89ce14b1bdc5a254c701380cdb1c682adf7e0f749", + "urls": [ + "bzz-raw://8cc58072164c74bf520a061918c422554097134f74854f0b3e1093ba36798f24", + "dweb:/ipfs/QmSsDaHZSjjNZVzbmkxhAKNkjpWMKtMKEVh9cLbskW4NJn" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/InterfaceResolver.sol": { + "keccak256": "0x6398dc59dd38501acd6a716173793e84aa1c454c3e21c190e10ddbe54dd8be41", + "urls": [ + "bzz-raw://7b3af5c29db8d4c13631b3ec427e5dc6dee1a5df0560d36b32deda2451e4bc11", + "dweb:/ipfs/QmXe2sWt31kEELa4VPU84QUUK6UDw6mQANc9gMVezoqioP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/NameResolver.sol": { + "keccak256": "0xcff06da8901397164ca9bea36361ac518fb62cd5283d2e2e835e006980ba4d16", + "urls": [ + "bzz-raw://ab5b2748d4297385b92a83aafdc79fc343842ee71e9537fa9c8cf4d2fbd4aeb0", + "dweb:/ipfs/QmZzZYyiRxZU271QDKhL4F4VdCfx5dZq4fT9Ud786XtiZz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/PubkeyResolver.sol": { + "keccak256": "0xaa10a8a7e1579987b6781657153ae3f16806f240b3ffaa54ea1f303f7cb7a74a", + "urls": [ + "bzz-raw://3ee3cbb2cca361819cea208485c718a3288cf9dc22762bb08c3dc445b60dc862", + "dweb:/ipfs/QmeXyPzZHyPMSHvQPDsCtjdC3rMCTzZNWeYXaWqiDbdmSt" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/TextResolver.sol": { + "keccak256": "0xdfb11cd7e9aef793d88c517195a6d3ac4736aa2aa7f27baafc2541bb2c639774", + "urls": [ + "bzz-raw://84b3d3a186a91c242a729be0da2ad1b705a332472cea0c81d81d4b8e309f3440", + "dweb:/ipfs/QmQTKAyoS6DEUUNVKb5aECk3GBGb7AZNGSV4untv1ZNngi" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/initializable.sol": { + "keccak256": "0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721", + "urls": [ + "bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f", + "dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/strings.sol": { + "keccak256": "0xd7c99d0733e73dc27cba285890b254d36d070807da9e60a573dcc4b5ec3c6f3d", + "urls": [ + "bzz-raw://95845b2178b081aa0ad872f04694fd87f9553d0f78b8e079ce98773dbafc9033", + "dweb:/ipfs/QmPsNebBo51KzdM7ewAPJ5weCL7J5Piy2y1Hgcto2TmvDP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/balanceable.sol": { + "keccak256": "0x5a1c23a4b3afdad849f0639bac47e8c08c1949f0aa531113e06883f9a7ab6662", + "urls": [ + "bzz-raw://a9e6c391948533011c757d89a67cdcc6a741afa7e1c242138c591594d3a3238c", + "dweb:/ipfs/QmfPoN9Dv2AuPBcY1nAdByMAuW1Z7Wj4CnRW3KnRLtiuQM" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/bytesUtils.sol": { + "keccak256": "0x4ea4f266580ca57be6ec7b0d2fe6adb0bf51f978648c3aa65e8d02fe91351522", + "urls": [ + "bzz-raw://b3badb0e0c1dd6b21249852eb2b8fcdd2adffb2aa663926b51241d8eb06d2857", + "dweb:/ipfs/QmRvKPafRARyjdq5duZwx55cxUL4Vi8qvXo5HmQDt5Sq3s" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/controllable.sol": { + "keccak256": "0x8245bddc77a7c5b44dc7f285404193e47b951e9cbba12a765828cb3023f64336", + "urls": [ + "bzz-raw://df426810c455bccd40f5976a2906382e35800fe47e45a1991b4c3684827dd5ad", + "dweb:/ipfs/QmfMrmV9xYTy6NfFnWR4Y29qRzgU8wmiNjkbnYoFUw8YK6" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ensResolvable.sol": { + "keccak256": "0xddb1c7898472491906ebfa73b4c83f8bc946ff3e94e5c8814fe6ea063f3fb665", + "urls": [ + "bzz-raw://7911bc8eb24a89b0eb0e088de4399083af7b2761cce12cd622db715e46994897", + "dweb:/ipfs/QmTz3SyAoGFDopiJuFRES7x155hNFWLF6d9yctJhdNx9m5" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ownable.sol": { + "keccak256": "0x42429c64258acf6e8018aca4fb048760aba8c26e8256d7b7b93be6d542ad8726", + "urls": [ + "bzz-raw://d617ddff648eaffe0b13519b85c1405ed4b57c3a5329d2c950f06485b0f730a3", + "dweb:/ipfs/QmdgX3w1b5psWWEQzRRQ1j2Ej7NNQC1bWxc95YJJFay9f1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/tokenWhitelistable.sol": { + "keccak256": "0x6f0e7922c0be342960f7d3ff610ea3e6e46aa76e1f73f1ff6a529e352532f0a8", + "urls": [ + "bzz-raw://024bf0b3b2df1c5af6cfcd2aa6f281b98b48408b32ac400246a629e539e81ffe", + "dweb:/ipfs/QmNMb6C7a9pzcU7Gu48RBMcV3L3CitpjPiGC3zvNe9wnMj" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/transferrable.sol": { + "keccak256": "0x5f215d0f4f446f068e3948a7b5cf4dd621f4e9c4ba45047b95c4b7ad4c02765d", + "urls": [ + "bzz-raw://cda044581d476790ed11a5f8fb7ccc978e30b8649efa0132f0c701cdf30c2cb0", + "dweb:/ipfs/QmR4oKPAQyfV3wCtsuqT5V2D3BZvsgxV5Wufn5vtAH5ZkJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/licence.sol": { + "keccak256": "0x6adf2a5bc0e6bb1b53ce1a7085b7e10573d8ca6297f5f34e606ccaa4b3079a1c", + "urls": [ + "bzz-raw://d90d7cd882d355a1aec7d88c1bfe8eed85ee30b8ff7f101f7ef1fb4501e700c1", + "dweb:/ipfs/Qmdz8Fzpj9cE8msmcBUEP18KLfrjnvSdFjDf9yxAcCt1KY" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/tokenWhitelist.sol": { + "keccak256": "0x560b9284f40382c95ab64856a7acfd53eb416593053a40cf9f6fe229e08372a0", + "urls": [ + "bzz-raw://e2a217afa376bcb0d901937b52995a33f3ea16dff7e76691b20e761802e4a14b", + "dweb:/ipfs/QmZJhPn8zTtBBE2RQvWLA7FzGLsdbxDcRkMCKiyCw6ypQr" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": { + "keccak256": "0xdb84a948b1cd2f957eb445c541bf7689209c34dbab08ebce9faa0ddfb4aeb47b", + "urls": [ + "bzz-raw://bda80e1f7779ce8582edf170ec8b4d568e1a1f9ab0e171708f39afc0c272e1b3", + "dweb:/ipfs/QmNyeVpgs7ii3bGNbrM1B1yCz1Xs4DwcWKp8DgUm9vz241" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/artifacts/DailyLimitTrait.json b/contracts/artifacts/DailyLimitTrait.json new file mode 100644 index 00000000..e54521fe --- /dev/null +++ b/contracts/artifacts/DailyLimitTrait.json @@ -0,0 +1,71 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "görli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "linkReferences": {}, + "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820accf8d256322d05b8c1b4a49b3e753ad1efdce859a6724042b14b8ce6d9c93d164736f6c63430005110032", + "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xAC 0xCF DUP14 0x25 PUSH4 0x22D05B8C SHL 0x4A 0x49 0xB3 0xE7 MSTORE8 0xAD 0x1E REVERT 0xCE DUP6 SWAP11 PUSH8 0x24042B14B8CE6D9C SWAP4 0xD1 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "11450:3455:31:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820accf8d256322d05b8c1b4a49b3e753ad1efdce859a6724042b14b8ce6d9c93d164736f6c63430005110032", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xAC 0xCF DUP14 0x25 PUSH4 0x22D05B8C SHL 0x4A 0x49 0xB3 0xE7 MSTORE8 0xAD 0x1E REVERT 0xCE DUP6 SWAP11 PUSH8 0x24042B14B8CE6D9C SWAP4 0xD1 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "11450:3455:31:-;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "94", + "totalCost": "17094" + }, + "internal": { + "_confirmLimitUpdate(struct DailyLimitTrait.DailyLimit storage pointer,uint256)": "infinite", + "_enforceLimit(struct DailyLimitTrait.DailyLimit storage pointer,uint256)": "infinite", + "_getAvailableLimit(struct DailyLimitTrait.DailyLimit storage pointer)": "infinite", + "_modifyLimit(struct DailyLimitTrait.DailyLimit storage pointer,uint256)": "infinite", + "_setLimit(struct DailyLimitTrait.DailyLimit storage pointer,uint256)": "infinite", + "_submitLimitUpdate(struct DailyLimitTrait.DailyLimit storage pointer,uint256)": "infinite", + "_updateAvailableLimit(struct DailyLimitTrait.DailyLimit storage pointer)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "abi": [ + { + "anonymous": false, + "inputs": [], + "name": "UpdatedAvailableLimit", + "type": "event" + } + ] +} \ No newline at end of file diff --git a/contracts/artifacts/DailyLimitTrait_metadata.json b/contracts/artifacts/DailyLimitTrait_metadata.json new file mode 100644 index 00000000..9f25ca96 --- /dev/null +++ b/contracts/artifacts/DailyLimitTrait_metadata.json @@ -0,0 +1,262 @@ +{ + "compiler": { + "version": "0.5.17+commit.d19bba13" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "anonymous": false, + "inputs": [], + "name": "UpdatedAvailableLimit", + "type": "event" + } + ], + "devdoc": { + "methods": {}, + "title": "DailyLimitTrait This trait allows for daily limits to be included in other contracts. This contract will allow for a DailyLimit object to be instantiated and used." + }, + "userdoc": { + "methods": {} + } + }, + "settings": { + "compilationTarget": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": "DailyLimitTrait" + }, + "evmVersion": "istanbul", + "libraries": {}, + "optimizer": { + "enabled": true, + "runs": 200 + }, + "remappings": [] + }, + "sources": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/controller.sol": { + "keccak256": "0xb68e6d7092e8e9b3a914aea22172dce9c26dfa9805ba819958b5b8dde7dfd50f", + "urls": [ + "bzz-raw://a1cdba6a1bfc923815b2c1116327c1951ecf40ea8c67ae2456e1c4c50217eb61", + "dweb:/ipfs/QmX4rCEuMEBg6X3cpKdjTtxgNYBrCJyyA51KRR8vbE6sDF" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": { + "keccak256": "0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1", + "urls": [ + "bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf", + "dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ECDSA.sol": { + "keccak256": "0xfc3dde0661847b56e4ff8926be7e4cde9d960cbe18480e01ee648cfbf5d4055a", + "urls": [ + "bzz-raw://d8747b09cbf2ee6d96d21a990fcf326f08084c79fcfad5ed331d64b5705487d9", + "dweb:/ipfs/QmPsy6pKdNtGndw5PMRAXEQ8pVKEMuLvAbgxffZ9cXL4T1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC165.sol": { + "keccak256": "0xaca91baae00478feaafaedff2fc8ebd3d6738c7877ad78d9565ef328f683f4e8", + "urls": [ + "bzz-raw://c55b05166c731d830498a2dd576c6b19ba114e73eb5011dc684f368cb84c5216", + "dweb:/ipfs/QmVyYr64yP1aqFvhBSZeJtzMaPdLyF9w8pytudogFWKtur" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC20.sol": { + "keccak256": "0x54628c1175e0e40ff56df85e92bd9b4e5ee1614600713379ff885bd07f6ef010", + "urls": [ + "bzz-raw://2a0a4531eb59752b7c3315f3c796d2ce2befb0d21eca1908eb94f44873e458de", + "dweb:/ipfs/QmbrqZGUQZaSpYndb9eQ9WVEeboRBHaomma91tpD4ESWeE" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeERC20.sol": { + "keccak256": "0xa654c1247c418db9eb3034e5b795760d2048864625f509a0e81632351e4199c0", + "urls": [ + "bzz-raw://3798f03a8e74dcf0c90072c3f88ccc8be887b9fd9707b063e4c47df0a610478b", + "dweb:/ipfs/QmSaY9ZKzihx5GC3h9XiUmBpQbwhRQw93yasRqxp45cXBJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeMath.sol": { + "keccak256": "0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690", + "urls": [ + "bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610", + "dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENS.sol": { + "keccak256": "0x5d115f126a237cfccc6c687301f87bf3210b7f68594ef780d796caa6e72d6060", + "urls": [ + "bzz-raw://6ca3f8dbd17933dd487c532fcfddc42ec7b46f7ccc84cfcb266cbf8bf453758c", + "dweb:/ipfs/QmcrckQwvrffFdSgrC5txQw5xNruAVtkDQ2aj9V1MtVwKD" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENSBytesUtils.sol": { + "keccak256": "0xe9599418173f34cc89c737059f398ba9a9f5e8a44c67af218bb3373c589f3499", + "urls": [ + "bzz-raw://b20acd1d67c676364e862f4cecdcfc4ade3efc22445fb6fda4a801f6d865bde1", + "dweb:/ipfs/QmW2EP3T1y6kLtfB2rZFhqFBFWzUthvC1DZWzTfVLehPsy" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/PublicResolver.sol": { + "keccak256": "0xdc5767dd5f4c192c3085e89bcc3ab791ab4e3e082f03bfdca1e48f75a0ce72aa", + "urls": [ + "bzz-raw://d4cd247165490f08c6903e99dd86f8a6d279763b0a79660e544a7b8ae0e071dd", + "dweb:/ipfs/QmRyepaRuSLF8QNkV5QSwoTtc6BjX3Kr7KP8GQuCtWp1MH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/RRUtils.sol": { + "keccak256": "0x7be2b14a352eda9d632f2969e8ae00e6e2bf8cb286a0e1d9c3fb2af0b9d2d799", + "urls": [ + "bzz-raw://df3a4d1fb8e19407921d1dfe3a1b8029eb4dd7321f8dc66e16bb97590ce6ff3b", + "dweb:/ipfs/QmV2UTNqJAhiAGBYjUMZYuvvWpj43WC3VpZivmW3LSpfdc" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ResolverBase.sol": { + "keccak256": "0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8", + "urls": [ + "bzz-raw://dc477afd53175b96112bb0e2e25ce85b1f7c0e3fe0da4a2e8539d86712583b00", + "dweb:/ipfs/QmQdwwHEcNMxTWtkrNpkbxtokwiFDdQ5xwPYcuZPRbJQKp" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ABIResolver.sol": { + "keccak256": "0x794514d39c469bab511822ca7a1a7a7838dca338499889896c7dac4303c30c1f", + "urls": [ + "bzz-raw://3668c3ec6be58cf6bbbe2cfcb8e286927fa5ab028d501c8b26d2eeb816ce7303", + "dweb:/ipfs/Qme7RMhhcFxa1xzhJz24s3rdW2VePsPdJhFgQbAiieMjKz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/AddrResolver.sol": { + "keccak256": "0x4d6a95626f02bfc6e5ee75cde2a38e67e9eb9aada78473e05b7003ebd60d8ffb", + "urls": [ + "bzz-raw://45407b2f99a29d0cc3df3636ecc5316414d6eb855860e382dffa57329886d74a", + "dweb:/ipfs/QmaKTuaHdy7ADgPY718fsiwjn2Hd6dqxPtgRcwjNxtdunG" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ContentHashResolver.sol": { + "keccak256": "0xaa3d9b9baae36fbf831b8297832b54ffd1023b9ac508f2c5068b92ce0c30edfc", + "urls": [ + "bzz-raw://a30f83bbf8d55051bdc0b151131e5dca4966fe87f36648f9bf3e580d81d85fa2", + "dweb:/ipfs/QmbWeakvTkEJTRxqFL6wZPDdN6Wqq1tSgCJiu861UbH3yH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/DNSResolver.sol": { + "keccak256": "0x348116b6a303561102f057b89ce14b1bdc5a254c701380cdb1c682adf7e0f749", + "urls": [ + "bzz-raw://8cc58072164c74bf520a061918c422554097134f74854f0b3e1093ba36798f24", + "dweb:/ipfs/QmSsDaHZSjjNZVzbmkxhAKNkjpWMKtMKEVh9cLbskW4NJn" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/InterfaceResolver.sol": { + "keccak256": "0x6398dc59dd38501acd6a716173793e84aa1c454c3e21c190e10ddbe54dd8be41", + "urls": [ + "bzz-raw://7b3af5c29db8d4c13631b3ec427e5dc6dee1a5df0560d36b32deda2451e4bc11", + "dweb:/ipfs/QmXe2sWt31kEELa4VPU84QUUK6UDw6mQANc9gMVezoqioP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/NameResolver.sol": { + "keccak256": "0xcff06da8901397164ca9bea36361ac518fb62cd5283d2e2e835e006980ba4d16", + "urls": [ + "bzz-raw://ab5b2748d4297385b92a83aafdc79fc343842ee71e9537fa9c8cf4d2fbd4aeb0", + "dweb:/ipfs/QmZzZYyiRxZU271QDKhL4F4VdCfx5dZq4fT9Ud786XtiZz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/PubkeyResolver.sol": { + "keccak256": "0xaa10a8a7e1579987b6781657153ae3f16806f240b3ffaa54ea1f303f7cb7a74a", + "urls": [ + "bzz-raw://3ee3cbb2cca361819cea208485c718a3288cf9dc22762bb08c3dc445b60dc862", + "dweb:/ipfs/QmeXyPzZHyPMSHvQPDsCtjdC3rMCTzZNWeYXaWqiDbdmSt" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/TextResolver.sol": { + "keccak256": "0xdfb11cd7e9aef793d88c517195a6d3ac4736aa2aa7f27baafc2541bb2c639774", + "urls": [ + "bzz-raw://84b3d3a186a91c242a729be0da2ad1b705a332472cea0c81d81d4b8e309f3440", + "dweb:/ipfs/QmQTKAyoS6DEUUNVKb5aECk3GBGb7AZNGSV4untv1ZNngi" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/initializable.sol": { + "keccak256": "0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721", + "urls": [ + "bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f", + "dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/strings.sol": { + "keccak256": "0xd7c99d0733e73dc27cba285890b254d36d070807da9e60a573dcc4b5ec3c6f3d", + "urls": [ + "bzz-raw://95845b2178b081aa0ad872f04694fd87f9553d0f78b8e079ce98773dbafc9033", + "dweb:/ipfs/QmPsNebBo51KzdM7ewAPJ5weCL7J5Piy2y1Hgcto2TmvDP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/balanceable.sol": { + "keccak256": "0x5a1c23a4b3afdad849f0639bac47e8c08c1949f0aa531113e06883f9a7ab6662", + "urls": [ + "bzz-raw://a9e6c391948533011c757d89a67cdcc6a741afa7e1c242138c591594d3a3238c", + "dweb:/ipfs/QmfPoN9Dv2AuPBcY1nAdByMAuW1Z7Wj4CnRW3KnRLtiuQM" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/bytesUtils.sol": { + "keccak256": "0x4ea4f266580ca57be6ec7b0d2fe6adb0bf51f978648c3aa65e8d02fe91351522", + "urls": [ + "bzz-raw://b3badb0e0c1dd6b21249852eb2b8fcdd2adffb2aa663926b51241d8eb06d2857", + "dweb:/ipfs/QmRvKPafRARyjdq5duZwx55cxUL4Vi8qvXo5HmQDt5Sq3s" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/controllable.sol": { + "keccak256": "0x8245bddc77a7c5b44dc7f285404193e47b951e9cbba12a765828cb3023f64336", + "urls": [ + "bzz-raw://df426810c455bccd40f5976a2906382e35800fe47e45a1991b4c3684827dd5ad", + "dweb:/ipfs/QmfMrmV9xYTy6NfFnWR4Y29qRzgU8wmiNjkbnYoFUw8YK6" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ensResolvable.sol": { + "keccak256": "0xddb1c7898472491906ebfa73b4c83f8bc946ff3e94e5c8814fe6ea063f3fb665", + "urls": [ + "bzz-raw://7911bc8eb24a89b0eb0e088de4399083af7b2761cce12cd622db715e46994897", + "dweb:/ipfs/QmTz3SyAoGFDopiJuFRES7x155hNFWLF6d9yctJhdNx9m5" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ownable.sol": { + "keccak256": "0x42429c64258acf6e8018aca4fb048760aba8c26e8256d7b7b93be6d542ad8726", + "urls": [ + "bzz-raw://d617ddff648eaffe0b13519b85c1405ed4b57c3a5329d2c950f06485b0f730a3", + "dweb:/ipfs/QmdgX3w1b5psWWEQzRRQ1j2Ej7NNQC1bWxc95YJJFay9f1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/tokenWhitelistable.sol": { + "keccak256": "0x6f0e7922c0be342960f7d3ff610ea3e6e46aa76e1f73f1ff6a529e352532f0a8", + "urls": [ + "bzz-raw://024bf0b3b2df1c5af6cfcd2aa6f281b98b48408b32ac400246a629e539e81ffe", + "dweb:/ipfs/QmNMb6C7a9pzcU7Gu48RBMcV3L3CitpjPiGC3zvNe9wnMj" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/transferrable.sol": { + "keccak256": "0x5f215d0f4f446f068e3948a7b5cf4dd621f4e9c4ba45047b95c4b7ad4c02765d", + "urls": [ + "bzz-raw://cda044581d476790ed11a5f8fb7ccc978e30b8649efa0132f0c701cdf30c2cb0", + "dweb:/ipfs/QmR4oKPAQyfV3wCtsuqT5V2D3BZvsgxV5Wufn5vtAH5ZkJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/licence.sol": { + "keccak256": "0x6adf2a5bc0e6bb1b53ce1a7085b7e10573d8ca6297f5f34e606ccaa4b3079a1c", + "urls": [ + "bzz-raw://d90d7cd882d355a1aec7d88c1bfe8eed85ee30b8ff7f101f7ef1fb4501e700c1", + "dweb:/ipfs/Qmdz8Fzpj9cE8msmcBUEP18KLfrjnvSdFjDf9yxAcCt1KY" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/tokenWhitelist.sol": { + "keccak256": "0x560b9284f40382c95ab64856a7acfd53eb416593053a40cf9f6fe229e08372a0", + "urls": [ + "bzz-raw://e2a217afa376bcb0d901937b52995a33f3ea16dff7e76691b20e761802e4a14b", + "dweb:/ipfs/QmZJhPn8zTtBBE2RQvWLA7FzGLsdbxDcRkMCKiyCw6ypQr" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": { + "keccak256": "0xdb84a948b1cd2f957eb445c541bf7689209c34dbab08ebce9faa0ddfb4aeb47b", + "urls": [ + "bzz-raw://bda80e1f7779ce8582edf170ec8b4d568e1a1f9ab0e171708f39afc0c272e1b3", + "dweb:/ipfs/QmNyeVpgs7ii3bGNbrM1B1yCz1Xs4DwcWKp8DgUm9vz241" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/artifacts/GasTopUpLimit.json b/contracts/artifacts/GasTopUpLimit.json new file mode 100644 index 00000000..c16cfd7f --- /dev/null +++ b/contracts/artifacts/GasTopUpLimit.json @@ -0,0 +1,359 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "görli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b50610be8806100656000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d7d00461161008c578063cc0e7e5611610066578063cc0e7e56146101b0578063e2b4ce97146101b8578063f41c4319146101c0578063f776f518146101dd576100cf565b80637d7d0046146101725780638da5cb5b1461017a578063b242e53414610182576100cf565b80630f3a85d8146100d45780632121dc75146100f35780632587a6a21461010f578063715018a61461012957806374624c55146101315780637d73b2311461014e575b600080fd5b6100f1600480360360208110156100ea57600080fd5b50356101e5565b005b6100fb6102f1565b604080519115158252519081900360200190f35b610117610301565b60408051918252519081900360200190f35b6100f1610307565b6100f16004803603602081101561014757600080fd5b5035610405565b610156610509565b604080516001600160a01b039092168252519081900360200190f35b610117610518565b610156610529565b6100f16004803603604081101561019857600080fd5b506001600160a01b0381351690602001351515610538565b6101176106f2565b6101176106f8565b6100f1600480360360208110156101d657600080fd5b50356106fe565b6100fb610769565b6101ee33610772565b806101f857503330145b61023c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561025b57506706f05b59d3b200008111155b6102a2576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b6102b360368263ffffffff61078916565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b603554600160a01b900460ff1690565b60365490565b61031033610772565b61035a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166103b8576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b61040e33610772565b8061041857503330145b61045c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561047b57506706f05b59d3b200008111155b6104c2576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b6104d360368263ffffffff6107f216565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b6033546001600160a01b031690565b60006105246036610853565b905090565b6035546001600160a01b031690565b61054133610772565b61058b576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166105e9576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661062e5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b916023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061068757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b60395490565b60345490565b61070733610888565b610758576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6102b360368263ffffffff61091c16565b603a5460ff1690565b6035546001600160a01b038281169116145b919050565b600482015460ff16156107d7576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6107e18282610970565b50600401805460ff19166001179055565b600482015460ff1661084b576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b600281015460009061086e906201518063ffffffff61099316565b42111561087d57508054610784565b506001810154610784565b60006108956034546109f4565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ea57600080fd5b505afa1580156108fe573d6000803e3d6000fd5b505050506040513d602081101561091457600080fd5b505192915050565b8082600301541461095e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610b6f6022913960400191505060405180910390fd5b61096c828360030154610970565b5050565b61097982610b15565b808255600182015481101561096c57815460018301555050565b6000828201838110156109ed576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6033546000906001600160a01b0316610a54576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610aa057600080fd5b505afa158015610ab4573d6000803e3d6000fd5b505050506040513d6020811015610aca57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ea57600080fd5b6002810154610b2d906201518063ffffffff61099316565b421115610b6b57426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b5056fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a7231582072b36c267117249562ebf93790121b8369ca191166dc07c34fd23fddff3038da64736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH15 0xC2E074EC69A0DFB2997BA6C7D2E1E OR SWAP1 SSTORE PUSH32 0x7F2CE995617D2816B426C5C8698C5EC2952F7A34BB10F38326F74933D5893697 PUSH1 0x34 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBE8 DUP1 PUSH2 0x65 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7D7D0046 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xCC0E7E56 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xCC0E7E56 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xF41C4319 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xF776F518 EQ PUSH2 0x1DD JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x7D7D0046 EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x182 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0xF3A85D8 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x2587A6A2 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x74624C55 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x14E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFB PUSH2 0x2F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH2 0x301 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH2 0x307 JUMP JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x405 JUMP JUMPDEST PUSH2 0x156 PUSH2 0x509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH2 0x518 JUMP JUMPDEST PUSH2 0x156 PUSH2 0x529 JUMP JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x538 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x6F2 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x6F8 JUMP JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6FE JUMP JUMPDEST PUSH2 0xFB PUSH2 0x769 JUMP JUMPDEST PUSH2 0x1EE CALLER PUSH2 0x772 JUMP JUMPDEST DUP1 PUSH2 0x1F8 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x23C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH7 0x38D7EA4C68000 GT ISZERO DUP1 ISZERO PUSH2 0x25B JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 GT ISZERO JUMPDEST PUSH2 0x2A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x6F7574206F662072616E676520746F702D757 PUSH1 0x6C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B3 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x789 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x41FF5D5CE3B7935893A4E7269EC5CAAE9CCA5E3BF0EB4B21D2F443489667112E SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x310 CALLER PUSH2 0x772 JUMP JUMPDEST PUSH2 0x35A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x40E CALLER PUSH2 0x772 JUMP JUMPDEST DUP1 PUSH2 0x418 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x45C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH7 0x38D7EA4C68000 GT ISZERO DUP1 ISZERO PUSH2 0x47B JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 GT ISZERO JUMPDEST PUSH2 0x4C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x6F7574206F662072616E676520746F702D757 PUSH1 0x6C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4D3 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x7F2 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xAF2A77CD04C3CC155588DD3BF67B310AB4FB3B1DA3CF6B8D7D4D2AA1D09B794C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x524 PUSH1 0x36 PUSH2 0x853 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x541 CALLER PUSH2 0x772 JUMP JUMPDEST PUSH2 0x58B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x5E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x62E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB91 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x687 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x39 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x707 CALLER PUSH2 0x888 JUMP JUMPDEST PUSH2 0x758 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B3 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x91C AND JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1B1A5B5A5D08185B1C9958591E481CD95D PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7E1 DUP3 DUP3 PUSH2 0x970 JUMP JUMPDEST POP PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x84B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C696D6974206861736E2774206265656E207365742079657400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x86E SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x993 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x87D JUMPI POP DUP1 SLOAD PUSH2 0x784 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x784 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x895 PUSH1 0x34 SLOAD PUSH2 0x9F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 PUSH1 0x3 ADD SLOAD EQ PUSH2 0x95E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB6F PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x96C DUP3 DUP4 PUSH1 0x3 ADD SLOAD PUSH2 0x970 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x979 DUP3 PUSH2 0xB15 JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x96C JUMPI DUP2 SLOAD PUSH1 0x1 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x9ED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA54 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAB4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0xB2D SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x993 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0xB6B JUMPI TIMESTAMP PUSH1 0x2 DUP3 ADD SSTORE DUP1 SLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xE93BC25276D408D390778E7A8B926F2F67209C43ED540081B951FE128F0D3CD2 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP JUMP INVALID PUSH4 0x6F6E6669 PUSH19 0x6D65642F7375626D6974746564206C696D6974 KECCAK256 PUSH14 0x69736D617463686F776E65722063 PUSH2 0x6E6E PUSH16 0x742062652073657420746F207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A7231582072B36C26711724 SWAP6 PUSH3 0xEBF937 SWAP1 SLT SHL DUP4 PUSH10 0xCA191166DC07C34FD23F 0xDD SELFDESTRUCT ADDRESS CODESIZE 0xDA PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "17106:2510:31:-;;;1311:82:25;;;-1:-1:-1;;;;;;1311:82:25;1350:42;1311:82;;;1162:66:24;1312:58;;17106:2510:31;5:2:-1;;;;30:1;27;20:12;5:2;17106:2510:31;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d7d00461161008c578063cc0e7e5611610066578063cc0e7e56146101b0578063e2b4ce97146101b8578063f41c4319146101c0578063f776f518146101dd576100cf565b80637d7d0046146101725780638da5cb5b1461017a578063b242e53414610182576100cf565b80630f3a85d8146100d45780632121dc75146100f35780632587a6a21461010f578063715018a61461012957806374624c55146101315780637d73b2311461014e575b600080fd5b6100f1600480360360208110156100ea57600080fd5b50356101e5565b005b6100fb6102f1565b604080519115158252519081900360200190f35b610117610301565b60408051918252519081900360200190f35b6100f1610307565b6100f16004803603602081101561014757600080fd5b5035610405565b610156610509565b604080516001600160a01b039092168252519081900360200190f35b610117610518565b610156610529565b6100f16004803603604081101561019857600080fd5b506001600160a01b0381351690602001351515610538565b6101176106f2565b6101176106f8565b6100f1600480360360208110156101d657600080fd5b50356106fe565b6100fb610769565b6101ee33610772565b806101f857503330145b61023c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561025b57506706f05b59d3b200008111155b6102a2576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b6102b360368263ffffffff61078916565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b603554600160a01b900460ff1690565b60365490565b61031033610772565b61035a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166103b8576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b61040e33610772565b8061041857503330145b61045c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561047b57506706f05b59d3b200008111155b6104c2576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b6104d360368263ffffffff6107f216565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b6033546001600160a01b031690565b60006105246036610853565b905090565b6035546001600160a01b031690565b61054133610772565b61058b576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166105e9576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661062e5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b916023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061068757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b60395490565b60345490565b61070733610888565b610758576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6102b360368263ffffffff61091c16565b603a5460ff1690565b6035546001600160a01b038281169116145b919050565b600482015460ff16156107d7576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6107e18282610970565b50600401805460ff19166001179055565b600482015460ff1661084b576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b600281015460009061086e906201518063ffffffff61099316565b42111561087d57508054610784565b506001810154610784565b60006108956034546109f4565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ea57600080fd5b505afa1580156108fe573d6000803e3d6000fd5b505050506040513d602081101561091457600080fd5b505192915050565b8082600301541461095e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610b6f6022913960400191505060405180910390fd5b61096c828360030154610970565b5050565b61097982610b15565b808255600182015481101561096c57815460018301555050565b6000828201838110156109ed576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6033546000906001600160a01b0316610a54576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610aa057600080fd5b505afa158015610ab4573d6000803e3d6000fd5b505050506040513d6020811015610aca57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ea57600080fd5b6002810154610b2d906201518063ffffffff61099316565b421115610b6b57426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b5056fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a7231582072b36c267117249562ebf93790121b8369ca191166dc07c34fd23fddff3038da64736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7D7D0046 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xCC0E7E56 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xCC0E7E56 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xF41C4319 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xF776F518 EQ PUSH2 0x1DD JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x7D7D0046 EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x182 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0xF3A85D8 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x2587A6A2 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x74624C55 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x14E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1E5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFB PUSH2 0x2F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH2 0x301 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH2 0x307 JUMP JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x405 JUMP JUMPDEST PUSH2 0x156 PUSH2 0x509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x117 PUSH2 0x518 JUMP JUMPDEST PUSH2 0x156 PUSH2 0x529 JUMP JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x538 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x6F2 JUMP JUMPDEST PUSH2 0x117 PUSH2 0x6F8 JUMP JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6FE JUMP JUMPDEST PUSH2 0xFB PUSH2 0x769 JUMP JUMPDEST PUSH2 0x1EE CALLER PUSH2 0x772 JUMP JUMPDEST DUP1 PUSH2 0x1F8 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x23C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH7 0x38D7EA4C68000 GT ISZERO DUP1 ISZERO PUSH2 0x25B JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 GT ISZERO JUMPDEST PUSH2 0x2A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x6F7574206F662072616E676520746F702D757 PUSH1 0x6C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B3 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x789 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x41FF5D5CE3B7935893A4E7269EC5CAAE9CCA5E3BF0EB4B21D2F443489667112E SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x310 CALLER PUSH2 0x772 JUMP JUMPDEST PUSH2 0x35A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x40E CALLER PUSH2 0x772 JUMP JUMPDEST DUP1 PUSH2 0x418 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x45C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH7 0x38D7EA4C68000 GT ISZERO DUP1 ISZERO PUSH2 0x47B JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 GT ISZERO JUMPDEST PUSH2 0x4C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x6F7574206F662072616E676520746F702D757 PUSH1 0x6C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4D3 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x7F2 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xAF2A77CD04C3CC155588DD3BF67B310AB4FB3B1DA3CF6B8D7D4D2AA1D09B794C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x524 PUSH1 0x36 PUSH2 0x853 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x541 CALLER PUSH2 0x772 JUMP JUMPDEST PUSH2 0x58B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x5E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x62E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB91 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x687 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x39 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x707 CALLER PUSH2 0x888 JUMP JUMPDEST PUSH2 0x758 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2B3 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x91C AND JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1B1A5B5A5D08185B1C9958591E481CD95D PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x7E1 DUP3 DUP3 PUSH2 0x970 JUMP JUMPDEST POP PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x84B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C696D6974206861736E2774206265656E207365742079657400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x86E SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x993 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x87D JUMPI POP DUP1 SLOAD PUSH2 0x784 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x784 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x895 PUSH1 0x34 SLOAD PUSH2 0x9F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 PUSH1 0x3 ADD SLOAD EQ PUSH2 0x95E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB6F PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x96C DUP3 DUP4 PUSH1 0x3 ADD SLOAD PUSH2 0x970 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x979 DUP3 PUSH2 0xB15 JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x96C JUMPI DUP2 SLOAD PUSH1 0x1 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x9ED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA54 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAB4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0xB2D SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x993 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0xB6B JUMPI TIMESTAMP PUSH1 0x2 DUP3 ADD SSTORE DUP1 SLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xE93BC25276D408D390778E7A8B926F2F67209C43ED540081B951FE128F0D3CD2 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP JUMP INVALID PUSH4 0x6F6E6669 PUSH19 0x6D65642F7375626D6974746564206C696D6974 KECCAK256 PUSH14 0x69736D617463686F776E65722063 PUSH2 0x6E6E PUSH16 0x742062652073657420746F207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A7231582072B36C26711724 SWAP6 PUSH3 0xEBF937 SWAP1 SLT SHL DUP4 PUSH10 0xCA191166DC07C34FD23F 0xDD SELFDESTRUCT ADDRESS CODESIZE 0xDA PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "17106:2510:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17106:2510:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18648:286;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18648:286:31;;:::i;:::-;;2749:94:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;18434:106:31;;;:::i;:::-;;;;;;;;;;;;;;;;3119:306:26;;;:::i;19061:304:31:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19061:304:31;;:::i;1695:89:25:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1695:89:25;;;;;;;;;;;;;;17856:125:31;;;:::i;3508:85:26:-;;;:::i;1823:809::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1823:809:26;;;;;;;;;;:::i;18043:110:31:-;;;:::i;1778:95:24:-;;;:::i;17611:189:31:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17611:189:31;;:::i;18214:153::-;;;:::i;18648:286::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;18762:7;17419:8;18734:35;;:74;;;;;17351:10;18773:7;:35;;18734:74;18726:106;;;;;-1:-1:-1;;;18726:106:31;;;;;;;;;;;;-1:-1:-1;;;18726:106:31;;;;;;;;;;;;;;;18842:33;:14;18867:7;18842:33;:24;:33;:::i;:::-;18890:37;;;18907:10;18890:37;;;;;;;;;;;;;;;;;;;;;18648:286;:::o;2749:94:26:-;2821:15;;-1:-1:-1;;;2821:15:26;;;;;2749:94::o;18434:106:31:-;18513:14;:20;18434:106;:::o;3119:306:26:-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;3240:15;;-1:-1:-1;;;3240:15:26;;;;3232:57;;;;;-1:-1:-1;;;3232:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;3343:6;:19;;-1:-1:-1;;;;;;3343:19:26;;;3378:40;;;3360:1;3378:40;;;;;;;;;;;;;;;;;;;;3119:306::o;19061:304:31:-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;19184:7;17419:8;19156:35;;:74;;;;;17351:10;19195:7;:35;;19156:74;19148:106;;;;;-1:-1:-1;;;19148:106:31;;;;;;;;;;;;-1:-1:-1;;;19148:106:31;;;;;;;;;;;;;;;19264:42;:14;19298:7;19264:42;:33;:42;:::i;:::-;19321:37;;;;;;;;;;;;;;;;;19061:304;:::o;1695:89:25:-;1765:12;;-1:-1:-1;;;;;1765:12:25;1695:89;:::o;17856:125:31:-;17913:7;17939:35;:14;:33;:35::i;:::-;17932:42;;17856:125;:::o;3508:85:26:-;3580:6;;-1:-1:-1;;;;;3580:6:26;3508:85;:::o;1823:809::-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;1988:15;;-1:-1:-1;;;1988:15:26;;;;1980:57;;;;;-1:-1:-1;;;1980:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:22:26;;2110:70;;;;-1:-1:-1;;;2110:70:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:15;:31;;-1:-1:-1;;;;2265:31:26;-1:-1:-1;;;2265:31:26;;;;;;;;2375:75;;2414:25;;;-1:-1:-1;;;;;2414:25:26;;;;;;;;;;;;;;;2375:75;2531:6;;2510:38;;;-1:-1:-1;;;;;2531:6:26;;;2510:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2608:6:26;:17;;-1:-1:-1;;;;;;2608:17:26;-1:-1:-1;;;;;2608:17:26;;;;;;;;;;1823:809::o;18043:110:31:-;18124:22;;18043:110;:::o;1778:95:24:-;1851:15;;1778:95;:::o;17611:189:31:-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;17698:43:31;:14;17733:7;17698:43;:34;:43;:::i;18214:153::-;18315:45;;;;18214:153;:::o;4191:107:26:-;4285:6;;-1:-1:-1;;;;;4273:18:26;;;4285:6;;4273:18;4191:107;;;;:::o;13606:401:31:-;13757:35;;;;;;13756:36;13748:66;;;;;-1:-1:-1;;;13748:66:31;;;;;;;;;;;;-1:-1:-1;;;13748:66:31;;;;;;;;;;;;;;;13883:27;13896:4;13902:7;13883:12;:27::i;:::-;-1:-1:-1;13958:35:31;;:42;;-1:-1:-1;;13958:42:31;13996:4;13958:42;;;13606:401::o;14142:317::-;14293:35;;;;;;14285:73;;;;;-1:-1:-1;;;14285:73:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;14430:12;;;;:22;14142:317::o;12691:240::-;12796:19;;;;12767:7;;12796:33;;12820:8;12796:33;:23;:33;:::i;:::-;12790:3;:39;12786:139;;;-1:-1:-1;12852:10:31;;12845:17;;12786:139;-1:-1:-1;12900:14:31;;;;12893:21;;2393:158:24;2457:4;2492:28;2504:15;;2492:11;:28::i;:::-;-1:-1:-1;;;;;2480:54:24;;2535:8;2480:64;;;;;;;;;;;;;-1:-1:-1;;;;;2480:64:24;-1:-1:-1;;;;;2480:64:24;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2480:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2480:64:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2480:64:24;;2393:158;-1:-1:-1;;2393:158:24:o;11788:338:31:-;11973:7;11957:4;:12;;;:23;11949:70;;;;-1:-1:-1;;;11949:70:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12087:32;12100:4;12106;:12;;;12087;:32::i;:::-;11788:338;;:::o;13077:425::-;13211:27;13233:4;13211:21;:27::i;:::-;13303:20;;;13415:14;;;;:27;-1:-1:-1;13411:85:31;;;13475:10;;13458:14;;;:27;13077:425;;:::o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1971:165:25:-;1549:12;;2042:7;;-1:-1:-1;;;;;1549:12:25;1541:68;;;;;-1:-1:-1;;;1541:68:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:12;;2083:33;;;-1:-1:-1;;;2083:33:25;;;;;;;;;;-1:-1:-1;;;;;2087:12:25;;;;2083:26;;:33;;;;;;;;;;;;;;;2087:12;2083:33;;;5:2:-1;;;;30:1;27;20:12;5:2;2083:33:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2083:33:25;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2083:33:25;2068:61;;;-1:-1:-1;;;2068:61:25;;;;;;;;;;-1:-1:-1;;;;;2068:54:25;;;;;;:61;;;;;2083:33;;2068:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;14533:370:31;14617:19;;;;:33;;14641:8;14617:33;:23;:33;:::i;:::-;14611:3;:39;14607:290;;;14733:3;14711:19;;;:25;14834:10;;14817:14;;;:27;14863:23;;;;14834:10;;14863:23;14607:290;14533:370;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "609600", + "executionCost": "41487", + "totalCost": "651087" + }, + "external": { + "confirmGasTopUpLimitUpdate(uint256)": "infinite", + "controllerNode()": "1042", + "ensRegistry()": "1148", + "gasTopUpLimitAvailable()": "infinite", + "gasTopUpLimitControllerConfirmationRequired()": "1098", + "gasTopUpLimitPending()": "1020", + "gasTopUpLimitValue()": "1043", + "isTransferable()": "1050", + "owner()": "1082", + "renounceOwnership()": "24106", + "setGasTopUpLimit(uint256)": "infinite", + "submitGasTopUpLimitUpdate(uint256)": "infinite", + "transferOwnership(address,bool)": "infinite" + }, + "internal": { + "_initializeGasTopUpLimit()": "infinite" + } + }, + "methodIdentifiers": { + "confirmGasTopUpLimitUpdate(uint256)": "f41c4319", + "controllerNode()": "e2b4ce97", + "ensRegistry()": "7d73b231", + "gasTopUpLimitAvailable()": "7d7d0046", + "gasTopUpLimitControllerConfirmationRequired()": "f776f518", + "gasTopUpLimitPending()": "cc0e7e56", + "gasTopUpLimitValue()": "2587a6a2", + "isTransferable()": "2121dc75", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "setGasTopUpLimit(uint256)": "0f3a85d8", + "submitGasTopUpLimitUpdate(uint256)": "74624c55", + "transferOwnership(address,bool)": "b242e534" + } + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetGasTopUpLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedGasTopUpLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmGasTopUpLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setGasTopUpLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitGasTopUpLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/artifacts/GasTopUpLimit_metadata.json b/contracts/artifacts/GasTopUpLimit_metadata.json new file mode 100644 index 00000000..9c4f5c4b --- /dev/null +++ b/contracts/artifacts/GasTopUpLimit_metadata.json @@ -0,0 +1,589 @@ +{ + "compiler": { + "version": "0.5.17+commit.d19bba13" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetGasTopUpLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedGasTopUpLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmGasTopUpLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setGasTopUpLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitGasTopUpLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": { + "confirmGasTopUpLimitUpdate(uint256)": { + "details": "Confirm pending set top up gas limit operation." + }, + "controllerNode()": { + "return": "the controller node registered in ENS." + }, + "ensRegistry()": { + "return": "Current address of the ENS registry contract." + }, + "gasTopUpLimitAvailable()": { + "details": "View your available gas top-up limit" + }, + "gasTopUpLimitControllerConfirmationRequired()": { + "details": "Has the gas top-up limit been initialised" + }, + "gasTopUpLimitPending()": { + "details": "Is there an active gas top-up limit change" + }, + "gasTopUpLimitValue()": { + "details": "View how much gas top-up has been spent already" + }, + "isTransferable()": { + "return": "true if the ownership is transferable." + }, + "owner()": { + "return": "address of the owner." + }, + "renounceOwnership()": { + "details": "Renouncing to ownership will leave the contract without an owner and unusable.It will not be possible to call the functions with the `onlyOwner` modifier anymore." + }, + "setGasTopUpLimit(uint256)": { + "details": "Sets the daily gas top up limit.", + "params": { + "_amount": "is the gas top up amount in wei." + } + }, + "submitGasTopUpLimitUpdate(uint256)": { + "details": "Submit a daily gas top up limit update.", + "params": { + "_amount": "is the daily top up gas limit amount in wei." + } + }, + "transferOwnership(address,bool)": { + "params": { + "_account": "address to transfer ownership to.", + "_transferable": "indicates whether to keep the ownership transferable." + } + } + }, + "title": "GasTopUpLimit provides daily limit functionality." + }, + "userdoc": { + "methods": { + "isTransferable()": { + "notice": "check if the ownership is transferable." + }, + "owner()": { + "notice": "Find out owner address" + }, + "renounceOwnership()": { + "notice": "Allows the current owner to relinquish control of the contract." + }, + "transferOwnership(address,bool)": { + "notice": "Allows the current owner to transfer control of the contract to a new address." + } + } + } + }, + "settings": { + "compilationTarget": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": "GasTopUpLimit" + }, + "evmVersion": "istanbul", + "libraries": {}, + "optimizer": { + "enabled": true, + "runs": 200 + }, + "remappings": [] + }, + "sources": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/controller.sol": { + "keccak256": "0xb68e6d7092e8e9b3a914aea22172dce9c26dfa9805ba819958b5b8dde7dfd50f", + "urls": [ + "bzz-raw://a1cdba6a1bfc923815b2c1116327c1951ecf40ea8c67ae2456e1c4c50217eb61", + "dweb:/ipfs/QmX4rCEuMEBg6X3cpKdjTtxgNYBrCJyyA51KRR8vbE6sDF" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": { + "keccak256": "0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1", + "urls": [ + "bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf", + "dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ECDSA.sol": { + "keccak256": "0xfc3dde0661847b56e4ff8926be7e4cde9d960cbe18480e01ee648cfbf5d4055a", + "urls": [ + "bzz-raw://d8747b09cbf2ee6d96d21a990fcf326f08084c79fcfad5ed331d64b5705487d9", + "dweb:/ipfs/QmPsy6pKdNtGndw5PMRAXEQ8pVKEMuLvAbgxffZ9cXL4T1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC165.sol": { + "keccak256": "0xaca91baae00478feaafaedff2fc8ebd3d6738c7877ad78d9565ef328f683f4e8", + "urls": [ + "bzz-raw://c55b05166c731d830498a2dd576c6b19ba114e73eb5011dc684f368cb84c5216", + "dweb:/ipfs/QmVyYr64yP1aqFvhBSZeJtzMaPdLyF9w8pytudogFWKtur" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC20.sol": { + "keccak256": "0x54628c1175e0e40ff56df85e92bd9b4e5ee1614600713379ff885bd07f6ef010", + "urls": [ + "bzz-raw://2a0a4531eb59752b7c3315f3c796d2ce2befb0d21eca1908eb94f44873e458de", + "dweb:/ipfs/QmbrqZGUQZaSpYndb9eQ9WVEeboRBHaomma91tpD4ESWeE" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeERC20.sol": { + "keccak256": "0xa654c1247c418db9eb3034e5b795760d2048864625f509a0e81632351e4199c0", + "urls": [ + "bzz-raw://3798f03a8e74dcf0c90072c3f88ccc8be887b9fd9707b063e4c47df0a610478b", + "dweb:/ipfs/QmSaY9ZKzihx5GC3h9XiUmBpQbwhRQw93yasRqxp45cXBJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeMath.sol": { + "keccak256": "0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690", + "urls": [ + "bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610", + "dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENS.sol": { + "keccak256": "0x5d115f126a237cfccc6c687301f87bf3210b7f68594ef780d796caa6e72d6060", + "urls": [ + "bzz-raw://6ca3f8dbd17933dd487c532fcfddc42ec7b46f7ccc84cfcb266cbf8bf453758c", + "dweb:/ipfs/QmcrckQwvrffFdSgrC5txQw5xNruAVtkDQ2aj9V1MtVwKD" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENSBytesUtils.sol": { + "keccak256": "0xe9599418173f34cc89c737059f398ba9a9f5e8a44c67af218bb3373c589f3499", + "urls": [ + "bzz-raw://b20acd1d67c676364e862f4cecdcfc4ade3efc22445fb6fda4a801f6d865bde1", + "dweb:/ipfs/QmW2EP3T1y6kLtfB2rZFhqFBFWzUthvC1DZWzTfVLehPsy" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/PublicResolver.sol": { + "keccak256": "0xdc5767dd5f4c192c3085e89bcc3ab791ab4e3e082f03bfdca1e48f75a0ce72aa", + "urls": [ + "bzz-raw://d4cd247165490f08c6903e99dd86f8a6d279763b0a79660e544a7b8ae0e071dd", + "dweb:/ipfs/QmRyepaRuSLF8QNkV5QSwoTtc6BjX3Kr7KP8GQuCtWp1MH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/RRUtils.sol": { + "keccak256": "0x7be2b14a352eda9d632f2969e8ae00e6e2bf8cb286a0e1d9c3fb2af0b9d2d799", + "urls": [ + "bzz-raw://df3a4d1fb8e19407921d1dfe3a1b8029eb4dd7321f8dc66e16bb97590ce6ff3b", + "dweb:/ipfs/QmV2UTNqJAhiAGBYjUMZYuvvWpj43WC3VpZivmW3LSpfdc" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ResolverBase.sol": { + "keccak256": "0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8", + "urls": [ + "bzz-raw://dc477afd53175b96112bb0e2e25ce85b1f7c0e3fe0da4a2e8539d86712583b00", + "dweb:/ipfs/QmQdwwHEcNMxTWtkrNpkbxtokwiFDdQ5xwPYcuZPRbJQKp" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ABIResolver.sol": { + "keccak256": "0x794514d39c469bab511822ca7a1a7a7838dca338499889896c7dac4303c30c1f", + "urls": [ + "bzz-raw://3668c3ec6be58cf6bbbe2cfcb8e286927fa5ab028d501c8b26d2eeb816ce7303", + "dweb:/ipfs/Qme7RMhhcFxa1xzhJz24s3rdW2VePsPdJhFgQbAiieMjKz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/AddrResolver.sol": { + "keccak256": "0x4d6a95626f02bfc6e5ee75cde2a38e67e9eb9aada78473e05b7003ebd60d8ffb", + "urls": [ + "bzz-raw://45407b2f99a29d0cc3df3636ecc5316414d6eb855860e382dffa57329886d74a", + "dweb:/ipfs/QmaKTuaHdy7ADgPY718fsiwjn2Hd6dqxPtgRcwjNxtdunG" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ContentHashResolver.sol": { + "keccak256": "0xaa3d9b9baae36fbf831b8297832b54ffd1023b9ac508f2c5068b92ce0c30edfc", + "urls": [ + "bzz-raw://a30f83bbf8d55051bdc0b151131e5dca4966fe87f36648f9bf3e580d81d85fa2", + "dweb:/ipfs/QmbWeakvTkEJTRxqFL6wZPDdN6Wqq1tSgCJiu861UbH3yH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/DNSResolver.sol": { + "keccak256": "0x348116b6a303561102f057b89ce14b1bdc5a254c701380cdb1c682adf7e0f749", + "urls": [ + "bzz-raw://8cc58072164c74bf520a061918c422554097134f74854f0b3e1093ba36798f24", + "dweb:/ipfs/QmSsDaHZSjjNZVzbmkxhAKNkjpWMKtMKEVh9cLbskW4NJn" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/InterfaceResolver.sol": { + "keccak256": "0x6398dc59dd38501acd6a716173793e84aa1c454c3e21c190e10ddbe54dd8be41", + "urls": [ + "bzz-raw://7b3af5c29db8d4c13631b3ec427e5dc6dee1a5df0560d36b32deda2451e4bc11", + "dweb:/ipfs/QmXe2sWt31kEELa4VPU84QUUK6UDw6mQANc9gMVezoqioP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/NameResolver.sol": { + "keccak256": "0xcff06da8901397164ca9bea36361ac518fb62cd5283d2e2e835e006980ba4d16", + "urls": [ + "bzz-raw://ab5b2748d4297385b92a83aafdc79fc343842ee71e9537fa9c8cf4d2fbd4aeb0", + "dweb:/ipfs/QmZzZYyiRxZU271QDKhL4F4VdCfx5dZq4fT9Ud786XtiZz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/PubkeyResolver.sol": { + "keccak256": "0xaa10a8a7e1579987b6781657153ae3f16806f240b3ffaa54ea1f303f7cb7a74a", + "urls": [ + "bzz-raw://3ee3cbb2cca361819cea208485c718a3288cf9dc22762bb08c3dc445b60dc862", + "dweb:/ipfs/QmeXyPzZHyPMSHvQPDsCtjdC3rMCTzZNWeYXaWqiDbdmSt" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/TextResolver.sol": { + "keccak256": "0xdfb11cd7e9aef793d88c517195a6d3ac4736aa2aa7f27baafc2541bb2c639774", + "urls": [ + "bzz-raw://84b3d3a186a91c242a729be0da2ad1b705a332472cea0c81d81d4b8e309f3440", + "dweb:/ipfs/QmQTKAyoS6DEUUNVKb5aECk3GBGb7AZNGSV4untv1ZNngi" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/initializable.sol": { + "keccak256": "0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721", + "urls": [ + "bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f", + "dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/strings.sol": { + "keccak256": "0xd7c99d0733e73dc27cba285890b254d36d070807da9e60a573dcc4b5ec3c6f3d", + "urls": [ + "bzz-raw://95845b2178b081aa0ad872f04694fd87f9553d0f78b8e079ce98773dbafc9033", + "dweb:/ipfs/QmPsNebBo51KzdM7ewAPJ5weCL7J5Piy2y1Hgcto2TmvDP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/balanceable.sol": { + "keccak256": "0x5a1c23a4b3afdad849f0639bac47e8c08c1949f0aa531113e06883f9a7ab6662", + "urls": [ + "bzz-raw://a9e6c391948533011c757d89a67cdcc6a741afa7e1c242138c591594d3a3238c", + "dweb:/ipfs/QmfPoN9Dv2AuPBcY1nAdByMAuW1Z7Wj4CnRW3KnRLtiuQM" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/bytesUtils.sol": { + "keccak256": "0x4ea4f266580ca57be6ec7b0d2fe6adb0bf51f978648c3aa65e8d02fe91351522", + "urls": [ + "bzz-raw://b3badb0e0c1dd6b21249852eb2b8fcdd2adffb2aa663926b51241d8eb06d2857", + "dweb:/ipfs/QmRvKPafRARyjdq5duZwx55cxUL4Vi8qvXo5HmQDt5Sq3s" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/controllable.sol": { + "keccak256": "0x8245bddc77a7c5b44dc7f285404193e47b951e9cbba12a765828cb3023f64336", + "urls": [ + "bzz-raw://df426810c455bccd40f5976a2906382e35800fe47e45a1991b4c3684827dd5ad", + "dweb:/ipfs/QmfMrmV9xYTy6NfFnWR4Y29qRzgU8wmiNjkbnYoFUw8YK6" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ensResolvable.sol": { + "keccak256": "0xddb1c7898472491906ebfa73b4c83f8bc946ff3e94e5c8814fe6ea063f3fb665", + "urls": [ + "bzz-raw://7911bc8eb24a89b0eb0e088de4399083af7b2761cce12cd622db715e46994897", + "dweb:/ipfs/QmTz3SyAoGFDopiJuFRES7x155hNFWLF6d9yctJhdNx9m5" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ownable.sol": { + "keccak256": "0x42429c64258acf6e8018aca4fb048760aba8c26e8256d7b7b93be6d542ad8726", + "urls": [ + "bzz-raw://d617ddff648eaffe0b13519b85c1405ed4b57c3a5329d2c950f06485b0f730a3", + "dweb:/ipfs/QmdgX3w1b5psWWEQzRRQ1j2Ej7NNQC1bWxc95YJJFay9f1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/tokenWhitelistable.sol": { + "keccak256": "0x6f0e7922c0be342960f7d3ff610ea3e6e46aa76e1f73f1ff6a529e352532f0a8", + "urls": [ + "bzz-raw://024bf0b3b2df1c5af6cfcd2aa6f281b98b48408b32ac400246a629e539e81ffe", + "dweb:/ipfs/QmNMb6C7a9pzcU7Gu48RBMcV3L3CitpjPiGC3zvNe9wnMj" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/transferrable.sol": { + "keccak256": "0x5f215d0f4f446f068e3948a7b5cf4dd621f4e9c4ba45047b95c4b7ad4c02765d", + "urls": [ + "bzz-raw://cda044581d476790ed11a5f8fb7ccc978e30b8649efa0132f0c701cdf30c2cb0", + "dweb:/ipfs/QmR4oKPAQyfV3wCtsuqT5V2D3BZvsgxV5Wufn5vtAH5ZkJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/licence.sol": { + "keccak256": "0x6adf2a5bc0e6bb1b53ce1a7085b7e10573d8ca6297f5f34e606ccaa4b3079a1c", + "urls": [ + "bzz-raw://d90d7cd882d355a1aec7d88c1bfe8eed85ee30b8ff7f101f7ef1fb4501e700c1", + "dweb:/ipfs/Qmdz8Fzpj9cE8msmcBUEP18KLfrjnvSdFjDf9yxAcCt1KY" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/tokenWhitelist.sol": { + "keccak256": "0x560b9284f40382c95ab64856a7acfd53eb416593053a40cf9f6fe229e08372a0", + "urls": [ + "bzz-raw://e2a217afa376bcb0d901937b52995a33f3ea16dff7e76691b20e761802e4a14b", + "dweb:/ipfs/QmZJhPn8zTtBBE2RQvWLA7FzGLsdbxDcRkMCKiyCw6ypQr" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": { + "keccak256": "0xdb84a948b1cd2f957eb445c541bf7689209c34dbab08ebce9faa0ddfb4aeb47b", + "urls": [ + "bzz-raw://bda80e1f7779ce8582edf170ec8b4d568e1a1f9ab0e171708f39afc0c272e1b3", + "dweb:/ipfs/QmNyeVpgs7ii3bGNbrM1B1yCz1Xs4DwcWKp8DgUm9vz241" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/artifacts/LoadLimit.json b/contracts/artifacts/LoadLimit.json new file mode 100644 index 00000000..6c08f457 --- /dev/null +++ b/contracts/artifacts/LoadLimit.json @@ -0,0 +1,376 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "görli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d39660365534801561007957600080fd5b50610be7806100896000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063ab2059931161008c578063c4856cd911610066578063c4856cd9146101d3578063da84b1ed146101db578063e2b4ce97146101e3578063f40b51f8146101eb576100ea565b8063ab20599314610180578063b221f31614610188578063b242e534146101a5576100ea565b8063715018a6116100c8578063715018a6146101445780637d73b2311461014c578063877337b0146101705780638da5cb5b14610178576100ea565b80631efd0299146100ef5780632121dc75146101095780633bfec25414610125575b600080fd5b6100f7610208565b60408051918252519081900360200190f35b610111610219565b604080519115158252519081900360200190f35b6101426004803603602081101561013b57600080fd5b5035610229565b005b610142610321565b61015461041f565b604080516001600160a01b039092168252519081900360200190f35b6100f761042e565b610154610434565b610111610443565b6101426004803603602081101561019e57600080fd5b503561044c565b610142600480360360408110156101bb57600080fd5b506001600160a01b038135169060200135151561053c565b6100f76106f6565b6100f76106fc565b6100f7610702565b6101426004803603602081101561020157600080fd5b5035610708565b60006102146038610773565b905090565b603554600160a01b900460ff1690565b610232336107a9565b8061023c57503330145b610280576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6037548111156102d2576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6102e360388263ffffffff6107bd16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b61032a336107a9565b610374576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166103d2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b60365490565b6035546001600160a01b031690565b603c5460ff1690565b610455336107a9565b8061045f57503330145b6104a3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6037548111156104f5576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b61050660388263ffffffff61082616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b610545336107a9565b61058f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166105ed576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166106325760405162461bcd60e51b8152600401808060200182810382526023815260200180610b906023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061068b57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5490565b60385490565b60345490565b61071133610887565b610762576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6102e360388263ffffffff61091b16565b600281015460009061078e906201518063ffffffff61096f16565b42111561079d575080546107a4565b5060018101545b919050565b6035546001600160a01b0390811691161490565b600482015460ff161561080b576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b61081582826109d0565b50600401805460ff19166001179055565b600482015460ff1661087f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60006108946034546109f3565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108e957600080fd5b505afa1580156108fd573d6000803e3d6000fd5b505050506040513d602081101561091357600080fd5b505192915050565b8082600301541461095d5760405162461bcd60e51b8152600401808060200182810382526022815260200180610b6e6022913960400191505060405180910390fd5b61096b8283600301546109d0565b5050565b6000828201838110156109c9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6109d982610b14565b808255600182015481101561096b57815460018301555050565b6033546000906001600160a01b0316610a53576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610a9f57600080fd5b505afa158015610ab3573d6000803e3d6000fd5b505050506040513d6020811015610ac957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108e957600080fd5b6002810154610b2c906201518063ffffffff61096f16565b421115610b6a57426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b5056fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a723158202fbea0534af1f3f15c6efc1a4658dcb82f38911ed3887ff708963f03f9c82f3d64736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH15 0xC2E074EC69A0DFB2997BA6C7D2E1E OR SWAP1 SSTORE PUSH32 0x7F2CE995617D2816B426C5C8698C5EC2952F7A34BB10F38326F74933D5893697 PUSH1 0x34 SSTORE PUSH32 0xE84F90570F13FE09F288F2411FF9CF50DA611ED0C7DB7F73D48053FFC974D396 PUSH1 0x36 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBE7 DUP1 PUSH2 0x89 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAB205993 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC4856CD9 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC4856CD9 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xDA84B1ED EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xF40B51F8 EQ PUSH2 0x1EB JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0xAB205993 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0xB221F316 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x1A5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x877337B0 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x178 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1EFD0299 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x3BFEC254 EQ PUSH2 0x125 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x208 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x111 PUSH2 0x219 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x229 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x142 PUSH2 0x321 JUMP JUMPDEST PUSH2 0x154 PUSH2 0x41F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x42E JUMP JUMPDEST PUSH2 0x154 PUSH2 0x434 JUMP JUMPDEST PUSH2 0x111 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x44C JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x53C JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x6F6 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x6FC JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x702 JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x708 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x214 PUSH1 0x38 PUSH2 0x773 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x232 CALLER PUSH2 0x7A9 JUMP JUMPDEST DUP1 PUSH2 0x23C JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x280 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x37 SLOAD DUP2 GT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x1BDD5D081BD9881C985B99D9481B1BD85908185B5BDD5B9D PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2E3 PUSH1 0x38 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x7BD AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xB05243483E17C3F3377AEE82B7D47E5700B48288695FC08B7ECC2759AFA44EF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x32A CALLER PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x374 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3D2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x455 CALLER PUSH2 0x7A9 JUMP JUMPDEST DUP1 PUSH2 0x45F JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x4A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x37 SLOAD DUP2 GT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x1BDD5D081BD9881C985B99D9481B1BD85908185B5BDD5B9D PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x506 PUSH1 0x38 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x826 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC178D379965E5657B6FC57494E392F121A14119215DFB422AAD7DB4CC03F2D10 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x545 CALLER PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x58F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x5ED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x632 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB90 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x68B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x38 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x711 CALLER PUSH2 0x887 JUMP JUMPDEST PUSH2 0x762 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2E3 PUSH1 0x38 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x91B AND JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x78E SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x96F AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x79D JUMPI POP DUP1 SLOAD PUSH2 0x7A4 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x80B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1B1A5B5A5D08185B1C9958591E481CD95D PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x815 DUP3 DUP3 PUSH2 0x9D0 JUMP JUMPDEST POP PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x87F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C696D6974206861736E2774206265656E207365742079657400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x894 PUSH1 0x34 SLOAD PUSH2 0x9F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 PUSH1 0x3 ADD SLOAD EQ PUSH2 0x95D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB6E PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x96B DUP3 DUP4 PUSH1 0x3 ADD SLOAD PUSH2 0x9D0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x9C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x9D9 DUP3 PUSH2 0xB14 JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x96B JUMPI DUP2 SLOAD PUSH1 0x1 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAB3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0xB2C SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x96F AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0xB6A JUMPI TIMESTAMP PUSH1 0x2 DUP3 ADD SSTORE DUP1 SLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xE93BC25276D408D390778E7A8B926F2F67209C43ED540081B951FE128F0D3CD2 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP JUMP INVALID PUSH4 0x6F6E6669 PUSH19 0x6D65642F7375626D6974746564206C696D6974 KECCAK256 PUSH14 0x69736D617463686F776E65722063 PUSH2 0x6E6E PUSH16 0x742062652073657420746F207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A723158202FBEA0534AF1F3 CALL 0x5C PUSH15 0xFC1A4658DCB82F38911ED3887FF708 SWAP7 EXTCODEHASH SUB 0xF9 0xC8 0x2F RETURNDATASIZE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "19681:2552:31:-;;;1311:82:25;;;-1:-1:-1;;;;;;1311:82:25;1350:42;1311:82;;;1162:66:24;1312:58;;1143:66:27;1304:67;;19681:2552:31;5:2:-1;;;;30:1;27;20:12;5:2;19681:2552:31;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063ab2059931161008c578063c4856cd911610066578063c4856cd9146101d3578063da84b1ed146101db578063e2b4ce97146101e3578063f40b51f8146101eb576100ea565b8063ab20599314610180578063b221f31614610188578063b242e534146101a5576100ea565b8063715018a6116100c8578063715018a6146101445780637d73b2311461014c578063877337b0146101705780638da5cb5b14610178576100ea565b80631efd0299146100ef5780632121dc75146101095780633bfec25414610125575b600080fd5b6100f7610208565b60408051918252519081900360200190f35b610111610219565b604080519115158252519081900360200190f35b6101426004803603602081101561013b57600080fd5b5035610229565b005b610142610321565b61015461041f565b604080516001600160a01b039092168252519081900360200190f35b6100f761042e565b610154610434565b610111610443565b6101426004803603602081101561019e57600080fd5b503561044c565b610142600480360360408110156101bb57600080fd5b506001600160a01b038135169060200135151561053c565b6100f76106f6565b6100f76106fc565b6100f7610702565b6101426004803603602081101561020157600080fd5b5035610708565b60006102146038610773565b905090565b603554600160a01b900460ff1690565b610232336107a9565b8061023c57503330145b610280576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6037548111156102d2576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6102e360388263ffffffff6107bd16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b61032a336107a9565b610374576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166103d2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b60365490565b6035546001600160a01b031690565b603c5460ff1690565b610455336107a9565b8061045f57503330145b6104a3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6037548111156104f5576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b61050660388263ffffffff61082616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b610545336107a9565b61058f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff166105ed576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166106325760405162461bcd60e51b8152600401808060200182810382526023815260200180610b906023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b831515021790558061068b57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5490565b60385490565b60345490565b61071133610887565b610762576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6102e360388263ffffffff61091b16565b600281015460009061078e906201518063ffffffff61096f16565b42111561079d575080546107a4565b5060018101545b919050565b6035546001600160a01b0390811691161490565b600482015460ff161561080b576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b61081582826109d0565b50600401805460ff19166001179055565b600482015460ff1661087f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60006108946034546109f3565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108e957600080fd5b505afa1580156108fd573d6000803e3d6000fd5b505050506040513d602081101561091357600080fd5b505192915050565b8082600301541461095d5760405162461bcd60e51b8152600401808060200182810382526022815260200180610b6e6022913960400191505060405180910390fd5b61096b8283600301546109d0565b5050565b6000828201838110156109c9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6109d982610b14565b808255600182015481101561096b57815460018301555050565b6033546000906001600160a01b0316610a53576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610a9f57600080fd5b505afa158015610ab3573d6000803e3d6000fd5b505050506040513d6020811015610ac957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108e957600080fd5b6002810154610b2c906201518063ffffffff61096f16565b421115610b6a57426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b5056fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a723158202fbea0534af1f3f15c6efc1a4658dcb82f38911ed3887ff708963f03f9c82f3d64736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAB205993 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC4856CD9 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC4856CD9 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xDA84B1ED EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0xF40B51F8 EQ PUSH2 0x1EB JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0xAB205993 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0xB221F316 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x1A5 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x715018A6 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x877337B0 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x178 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x1EFD0299 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x109 JUMPI DUP1 PUSH4 0x3BFEC254 EQ PUSH2 0x125 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x208 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x111 PUSH2 0x219 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x229 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x142 PUSH2 0x321 JUMP JUMPDEST PUSH2 0x154 PUSH2 0x41F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x42E JUMP JUMPDEST PUSH2 0x154 PUSH2 0x434 JUMP JUMPDEST PUSH2 0x111 PUSH2 0x443 JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x19E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x44C JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x53C JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x6F6 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x6FC JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x702 JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x708 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x214 PUSH1 0x38 PUSH2 0x773 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x232 CALLER PUSH2 0x7A9 JUMP JUMPDEST DUP1 PUSH2 0x23C JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x280 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x37 SLOAD DUP2 GT ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x1BDD5D081BD9881C985B99D9481B1BD85908185B5BDD5B9D PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2E3 PUSH1 0x38 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x7BD AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xB05243483E17C3F3377AEE82B7D47E5700B48288695FC08B7ECC2759AFA44EF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x32A CALLER PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x374 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3D2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3C SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x455 CALLER PUSH2 0x7A9 JUMP JUMPDEST DUP1 PUSH2 0x45F JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x4A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x37 SLOAD DUP2 GT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x1BDD5D081BD9881C985B99D9481B1BD85908185B5BDD5B9D PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x506 PUSH1 0x38 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x826 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC178D379965E5657B6FC57494E392F121A14119215DFB422AAD7DB4CC03F2D10 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x545 CALLER PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x58F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x5ED JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x632 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB90 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x68B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x38 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x711 CALLER PUSH2 0x887 JUMP JUMPDEST PUSH2 0x762 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2E3 PUSH1 0x38 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x91B AND JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x78E SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x96F AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x79D JUMPI POP DUP1 SLOAD PUSH2 0x7A4 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x80B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1B1A5B5A5D08185B1C9958591E481CD95D PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x815 DUP3 DUP3 PUSH2 0x9D0 JUMP JUMPDEST POP PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x87F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C696D6974206861736E2774206265656E207365742079657400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x894 PUSH1 0x34 SLOAD PUSH2 0x9F3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 PUSH1 0x3 ADD SLOAD EQ PUSH2 0x95D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB6E PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x96B DUP3 DUP4 PUSH1 0x3 ADD SLOAD PUSH2 0x9D0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x9C9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x9D9 DUP3 PUSH2 0xB14 JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x96B JUMPI DUP2 SLOAD PUSH1 0x1 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA53 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAB3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0xB2C SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x96F AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0xB6A JUMPI TIMESTAMP PUSH1 0x2 DUP3 ADD SSTORE DUP1 SLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xE93BC25276D408D390778E7A8B926F2F67209C43ED540081B951FE128F0D3CD2 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP JUMP INVALID PUSH4 0x6F6E6669 PUSH19 0x6D65642F7375626D6974746564206C696D6974 KECCAK256 PUSH14 0x69736D617463686F776E65722063 PUSH2 0x6E6E PUSH16 0x742062652073657420746F207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A723158202FBEA0534AF1F3 CALL 0x5C PUSH15 0xFC1A4658DCB82F38911ED3887FF708 SWAP7 EXTCODEHASH SUB 0xF9 0xC8 0x2F RETURNDATASIZE PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "19681:2552:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19681:2552:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21121:117;;;:::i;:::-;;;;;;;;;;;;;;;;2749:94:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;20234:233:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20234:233:31;;:::i;:::-;;3119:306:26;;;:::i;1695:89:25:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1695:89:25;;;;;;;;;;;;;;1496:105:27;;;:::i;3508:85:26:-;;;:::i;21451:145:31:-;;;:::i;20582:251::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20582:251:31;;:::i;1823:809:26:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1823:809:26;;;;;;;;;;:::i;21294:102:31:-;;;:::i;21663:98::-;;;:::i;1778:95:24:-;;;:::i;20894:177:31:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20894:177:31;;:::i;21121:117::-;21174:7;21200:31;:10;:29;:31::i;:::-;21193:38;;21121:117;:::o;2749:94:26:-;2821:15;;-1:-1:-1;;;2821:15:26;;;;;2749:94::o;20234:233:31:-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;20327:17;;20316:7;:28;;20308:65;;;;;-1:-1:-1;;;20308:65:31;;;;;;;;;;;;-1:-1:-1;;;20308:65:31;;;;;;;;;;;;;;;20383:29;:10;20404:7;20383:29;:20;:29;:::i;:::-;20427:33;;;20440:10;20427:33;;;;;;;;;;;;;;;;;;;;;20234:233;:::o;3119:306:26:-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;3240:15;;-1:-1:-1;;;3240:15:26;;;;3232:57;;;;;-1:-1:-1;;;3232:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;3343:6;:19;;-1:-1:-1;;;;;;3343:19:26;;;3378:40;;;3360:1;3378:40;;;;;;;;;;;;;;;;;;;;3119:306::o;1695:89:25:-;1765:12;;-1:-1:-1;;;;;1765:12:25;1695:89;:::o;1496:105:27:-;1575:19;;1496:105;:::o;3508:85:26:-;3580:6;;-1:-1:-1;;;;;3580:6:26;3508:85;:::o;21451:145:31:-;21548:41;;;;21451:145;:::o;20582:251::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;20684:17;;20673:7;:28;;20665:65;;;;;-1:-1:-1;;;20665:65:31;;;;;;;;;;;;-1:-1:-1;;;20665:65:31;;;;;;;;;;;;;;;20740:38;:10;20770:7;20740:38;:29;:38;:::i;:::-;20793:33;;;;;;;;;;;;;;;;;20582:251;:::o;1823:809:26:-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;1988:15;;-1:-1:-1;;;1988:15:26;;;;1980:57;;;;;-1:-1:-1;;;1980:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:22:26;;2110:70;;;;-1:-1:-1;;;2110:70:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:15;:31;;-1:-1:-1;;;;2265:31:26;-1:-1:-1;;;2265:31:26;;;;;;;;2375:75;;2414:25;;;-1:-1:-1;;;;;2414:25:26;;;;;;;;;;;;;;;2375:75;2531:6;;2510:38;;;-1:-1:-1;;;;;2531:6:26;;;2510:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2608:6:26;:17;;-1:-1:-1;;;;;;2608:17:26;-1:-1:-1;;;;;2608:17:26;;;;;;;;;;1823:809::o;21294:102:31:-;21371:18;;21294:102;:::o;21663:98::-;21738:10;:16;21663:98;:::o;1778:95:24:-;1851:15;;1778:95;:::o;20894:177:31:-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;20977:39:31;:10;21008:7;20977:39;:30;:39;:::i;12691:240::-;12796:19;;;;12767:7;;12796:33;;12820:8;12796:33;:23;:33;:::i;:::-;12790:3;:39;12786:139;;;-1:-1:-1;12852:10:31;;12845:17;;12786:139;-1:-1:-1;12900:14:31;;;;12786:139;12691:240;;;:::o;4191:107:26:-;4285:6;;-1:-1:-1;;;;;4285:6:26;;;4273:18;;;;4191:107::o;13606:401:31:-;13757:35;;;;;;13756:36;13748:66;;;;;-1:-1:-1;;;13748:66:31;;;;;;;;;;;;-1:-1:-1;;;13748:66:31;;;;;;;;;;;;;;;13883:27;13896:4;13902:7;13883:12;:27::i;:::-;-1:-1:-1;13958:35:31;;:42;;-1:-1:-1;;13958:42:31;13996:4;13958:42;;;13606:401::o;14142:317::-;14293:35;;;;;;14285:73;;;;;-1:-1:-1;;;14285:73:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;14430:12;;;;:22;14142:317::o;2393:158:24:-;2457:4;2492:28;2504:15;;2492:11;:28::i;:::-;-1:-1:-1;;;;;2480:54:24;;2535:8;2480:64;;;;;;;;;;;;;-1:-1:-1;;;;;2480:64:24;-1:-1:-1;;;;;2480:64:24;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2480:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2480:64:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2480:64:24;;2393:158;-1:-1:-1;;2393:158:24:o;11788:338:31:-;11973:7;11957:4;:12;;;:23;11949:70;;;;-1:-1:-1;;;11949:70:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12087:32;12100:4;12106;:12;;;12087;:32::i;:::-;11788:338;;:::o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;13077:425:31:-;13211:27;13233:4;13211:21;:27::i;:::-;13303:20;;;13415:14;;;;:27;-1:-1:-1;13411:85:31;;;13475:10;;13458:14;;;:27;13077:425;;:::o;1971:165:25:-;1549:12;;2042:7;;-1:-1:-1;;;;;1549:12:25;1541:68;;;;;-1:-1:-1;;;1541:68:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:12;;2083:33;;;-1:-1:-1;;;2083:33:25;;;;;;;;;;-1:-1:-1;;;;;2087:12:25;;;;2083:26;;:33;;;;;;;;;;;;;;;2087:12;2083:33;;;5:2:-1;;;;30:1;27;20:12;5:2;2083:33:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2083:33:25;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2083:33:25;2068:61;;;-1:-1:-1;;;2068:61:25;;;;;;;;;;-1:-1:-1;;;;;2068:54:25;;;;;;:61;;;;;2083:33;;2068:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;14533:370:31;14617:19;;;;:33;;14641:8;14617:33;:23;:33;:::i;:::-;14611:3;:39;14607:290;;;14733:3;14711:19;;;:25;14834:10;;14817:14;;;:27;14863:23;;;;14834:10;;14863:23;14607:290;14533:370;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "609400", + "executionCost": "61493", + "totalCost": "670893" + }, + "external": { + "confirmLoadLimitUpdate(uint256)": "infinite", + "controllerNode()": "1064", + "ensRegistry()": "1082", + "isTransferable()": "1073", + "loadLimitAvailable()": "infinite", + "loadLimitControllerConfirmationRequired()": "1033", + "loadLimitPending()": "1020", + "loadLimitValue()": "1042", + "owner()": "1126", + "renounceOwnership()": "24056", + "setLoadLimit(uint256)": "infinite", + "submitLoadLimitUpdate(uint256)": "infinite", + "tokenWhitelistNode()": "1065", + "transferOwnership(address,bool)": "infinite" + }, + "internal": { + "_initializeLoadLimit(bytes32)": "infinite" + } + }, + "methodIdentifiers": { + "confirmLoadLimitUpdate(uint256)": "f40b51f8", + "controllerNode()": "e2b4ce97", + "ensRegistry()": "7d73b231", + "isTransferable()": "2121dc75", + "loadLimitAvailable()": "1efd0299", + "loadLimitControllerConfirmationRequired()": "ab205993", + "loadLimitPending()": "c4856cd9", + "loadLimitValue()": "da84b1ed", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "setLoadLimit(uint256)": "3bfec254", + "submitLoadLimitUpdate(uint256)": "b221f316", + "tokenWhitelistNode()": "877337b0", + "transferOwnership(address,bool)": "b242e534" + } + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetLoadLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedLoadLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmLoadLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setLoadLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitLoadLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenWhitelistNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/artifacts/LoadLimit_metadata.json b/contracts/artifacts/LoadLimit_metadata.json new file mode 100644 index 00000000..cb2fd3d1 --- /dev/null +++ b/contracts/artifacts/LoadLimit_metadata.json @@ -0,0 +1,610 @@ +{ + "compiler": { + "version": "0.5.17+commit.d19bba13" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetLoadLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedLoadLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmLoadLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setLoadLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitLoadLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenWhitelistNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": { + "confirmLoadLimitUpdate(uint256)": { + "details": "Confirm pending set load limit operation." + }, + "controllerNode()": { + "return": "the controller node registered in ENS." + }, + "ensRegistry()": { + "return": "Current address of the ENS registry contract." + }, + "isTransferable()": { + "return": "true if the ownership is transferable." + }, + "loadLimitAvailable()": { + "details": "View your available load limit" + }, + "loadLimitControllerConfirmationRequired()": { + "details": "Has the load limit been initialised" + }, + "loadLimitPending()": { + "details": "Is there an active load limit change" + }, + "loadLimitValue()": { + "details": "View how much laod limit has been spent already" + }, + "owner()": { + "return": "address of the owner." + }, + "renounceOwnership()": { + "details": "Renouncing to ownership will leave the contract without an owner and unusable.It will not be possible to call the functions with the `onlyOwner` modifier anymore." + }, + "setLoadLimit(uint256)": { + "details": "Sets a daily card load limit.", + "params": { + "_amount": "is the card load amount in current stablecoin base units." + } + }, + "submitLoadLimitUpdate(uint256)": { + "details": "Submit a daily load limit update.", + "params": { + "_amount": "is the daily load limit amount in wei." + } + }, + "tokenWhitelistNode()": { + "return": "TokenWhitelist's node registered in ENS." + }, + "transferOwnership(address,bool)": { + "params": { + "_account": "address to transfer ownership to.", + "_transferable": "indicates whether to keep the ownership transferable." + } + } + }, + "title": "LoadLimit provides daily load limit functionality." + }, + "userdoc": { + "methods": { + "isTransferable()": { + "notice": "check if the ownership is transferable." + }, + "owner()": { + "notice": "Find out owner address" + }, + "renounceOwnership()": { + "notice": "Allows the current owner to relinquish control of the contract." + }, + "tokenWhitelistNode()": { + "notice": "This shows what TokenWhitelist is being used" + }, + "transferOwnership(address,bool)": { + "notice": "Allows the current owner to transfer control of the contract to a new address." + } + } + } + }, + "settings": { + "compilationTarget": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": "LoadLimit" + }, + "evmVersion": "istanbul", + "libraries": {}, + "optimizer": { + "enabled": true, + "runs": 200 + }, + "remappings": [] + }, + "sources": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/controller.sol": { + "keccak256": "0xb68e6d7092e8e9b3a914aea22172dce9c26dfa9805ba819958b5b8dde7dfd50f", + "urls": [ + "bzz-raw://a1cdba6a1bfc923815b2c1116327c1951ecf40ea8c67ae2456e1c4c50217eb61", + "dweb:/ipfs/QmX4rCEuMEBg6X3cpKdjTtxgNYBrCJyyA51KRR8vbE6sDF" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": { + "keccak256": "0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1", + "urls": [ + "bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf", + "dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ECDSA.sol": { + "keccak256": "0xfc3dde0661847b56e4ff8926be7e4cde9d960cbe18480e01ee648cfbf5d4055a", + "urls": [ + "bzz-raw://d8747b09cbf2ee6d96d21a990fcf326f08084c79fcfad5ed331d64b5705487d9", + "dweb:/ipfs/QmPsy6pKdNtGndw5PMRAXEQ8pVKEMuLvAbgxffZ9cXL4T1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC165.sol": { + "keccak256": "0xaca91baae00478feaafaedff2fc8ebd3d6738c7877ad78d9565ef328f683f4e8", + "urls": [ + "bzz-raw://c55b05166c731d830498a2dd576c6b19ba114e73eb5011dc684f368cb84c5216", + "dweb:/ipfs/QmVyYr64yP1aqFvhBSZeJtzMaPdLyF9w8pytudogFWKtur" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC20.sol": { + "keccak256": "0x54628c1175e0e40ff56df85e92bd9b4e5ee1614600713379ff885bd07f6ef010", + "urls": [ + "bzz-raw://2a0a4531eb59752b7c3315f3c796d2ce2befb0d21eca1908eb94f44873e458de", + "dweb:/ipfs/QmbrqZGUQZaSpYndb9eQ9WVEeboRBHaomma91tpD4ESWeE" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeERC20.sol": { + "keccak256": "0xa654c1247c418db9eb3034e5b795760d2048864625f509a0e81632351e4199c0", + "urls": [ + "bzz-raw://3798f03a8e74dcf0c90072c3f88ccc8be887b9fd9707b063e4c47df0a610478b", + "dweb:/ipfs/QmSaY9ZKzihx5GC3h9XiUmBpQbwhRQw93yasRqxp45cXBJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeMath.sol": { + "keccak256": "0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690", + "urls": [ + "bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610", + "dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENS.sol": { + "keccak256": "0x5d115f126a237cfccc6c687301f87bf3210b7f68594ef780d796caa6e72d6060", + "urls": [ + "bzz-raw://6ca3f8dbd17933dd487c532fcfddc42ec7b46f7ccc84cfcb266cbf8bf453758c", + "dweb:/ipfs/QmcrckQwvrffFdSgrC5txQw5xNruAVtkDQ2aj9V1MtVwKD" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENSBytesUtils.sol": { + "keccak256": "0xe9599418173f34cc89c737059f398ba9a9f5e8a44c67af218bb3373c589f3499", + "urls": [ + "bzz-raw://b20acd1d67c676364e862f4cecdcfc4ade3efc22445fb6fda4a801f6d865bde1", + "dweb:/ipfs/QmW2EP3T1y6kLtfB2rZFhqFBFWzUthvC1DZWzTfVLehPsy" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/PublicResolver.sol": { + "keccak256": "0xdc5767dd5f4c192c3085e89bcc3ab791ab4e3e082f03bfdca1e48f75a0ce72aa", + "urls": [ + "bzz-raw://d4cd247165490f08c6903e99dd86f8a6d279763b0a79660e544a7b8ae0e071dd", + "dweb:/ipfs/QmRyepaRuSLF8QNkV5QSwoTtc6BjX3Kr7KP8GQuCtWp1MH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/RRUtils.sol": { + "keccak256": "0x7be2b14a352eda9d632f2969e8ae00e6e2bf8cb286a0e1d9c3fb2af0b9d2d799", + "urls": [ + "bzz-raw://df3a4d1fb8e19407921d1dfe3a1b8029eb4dd7321f8dc66e16bb97590ce6ff3b", + "dweb:/ipfs/QmV2UTNqJAhiAGBYjUMZYuvvWpj43WC3VpZivmW3LSpfdc" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ResolverBase.sol": { + "keccak256": "0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8", + "urls": [ + "bzz-raw://dc477afd53175b96112bb0e2e25ce85b1f7c0e3fe0da4a2e8539d86712583b00", + "dweb:/ipfs/QmQdwwHEcNMxTWtkrNpkbxtokwiFDdQ5xwPYcuZPRbJQKp" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ABIResolver.sol": { + "keccak256": "0x794514d39c469bab511822ca7a1a7a7838dca338499889896c7dac4303c30c1f", + "urls": [ + "bzz-raw://3668c3ec6be58cf6bbbe2cfcb8e286927fa5ab028d501c8b26d2eeb816ce7303", + "dweb:/ipfs/Qme7RMhhcFxa1xzhJz24s3rdW2VePsPdJhFgQbAiieMjKz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/AddrResolver.sol": { + "keccak256": "0x4d6a95626f02bfc6e5ee75cde2a38e67e9eb9aada78473e05b7003ebd60d8ffb", + "urls": [ + "bzz-raw://45407b2f99a29d0cc3df3636ecc5316414d6eb855860e382dffa57329886d74a", + "dweb:/ipfs/QmaKTuaHdy7ADgPY718fsiwjn2Hd6dqxPtgRcwjNxtdunG" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ContentHashResolver.sol": { + "keccak256": "0xaa3d9b9baae36fbf831b8297832b54ffd1023b9ac508f2c5068b92ce0c30edfc", + "urls": [ + "bzz-raw://a30f83bbf8d55051bdc0b151131e5dca4966fe87f36648f9bf3e580d81d85fa2", + "dweb:/ipfs/QmbWeakvTkEJTRxqFL6wZPDdN6Wqq1tSgCJiu861UbH3yH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/DNSResolver.sol": { + "keccak256": "0x348116b6a303561102f057b89ce14b1bdc5a254c701380cdb1c682adf7e0f749", + "urls": [ + "bzz-raw://8cc58072164c74bf520a061918c422554097134f74854f0b3e1093ba36798f24", + "dweb:/ipfs/QmSsDaHZSjjNZVzbmkxhAKNkjpWMKtMKEVh9cLbskW4NJn" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/InterfaceResolver.sol": { + "keccak256": "0x6398dc59dd38501acd6a716173793e84aa1c454c3e21c190e10ddbe54dd8be41", + "urls": [ + "bzz-raw://7b3af5c29db8d4c13631b3ec427e5dc6dee1a5df0560d36b32deda2451e4bc11", + "dweb:/ipfs/QmXe2sWt31kEELa4VPU84QUUK6UDw6mQANc9gMVezoqioP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/NameResolver.sol": { + "keccak256": "0xcff06da8901397164ca9bea36361ac518fb62cd5283d2e2e835e006980ba4d16", + "urls": [ + "bzz-raw://ab5b2748d4297385b92a83aafdc79fc343842ee71e9537fa9c8cf4d2fbd4aeb0", + "dweb:/ipfs/QmZzZYyiRxZU271QDKhL4F4VdCfx5dZq4fT9Ud786XtiZz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/PubkeyResolver.sol": { + "keccak256": "0xaa10a8a7e1579987b6781657153ae3f16806f240b3ffaa54ea1f303f7cb7a74a", + "urls": [ + "bzz-raw://3ee3cbb2cca361819cea208485c718a3288cf9dc22762bb08c3dc445b60dc862", + "dweb:/ipfs/QmeXyPzZHyPMSHvQPDsCtjdC3rMCTzZNWeYXaWqiDbdmSt" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/TextResolver.sol": { + "keccak256": "0xdfb11cd7e9aef793d88c517195a6d3ac4736aa2aa7f27baafc2541bb2c639774", + "urls": [ + "bzz-raw://84b3d3a186a91c242a729be0da2ad1b705a332472cea0c81d81d4b8e309f3440", + "dweb:/ipfs/QmQTKAyoS6DEUUNVKb5aECk3GBGb7AZNGSV4untv1ZNngi" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/initializable.sol": { + "keccak256": "0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721", + "urls": [ + "bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f", + "dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/strings.sol": { + "keccak256": "0xd7c99d0733e73dc27cba285890b254d36d070807da9e60a573dcc4b5ec3c6f3d", + "urls": [ + "bzz-raw://95845b2178b081aa0ad872f04694fd87f9553d0f78b8e079ce98773dbafc9033", + "dweb:/ipfs/QmPsNebBo51KzdM7ewAPJ5weCL7J5Piy2y1Hgcto2TmvDP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/balanceable.sol": { + "keccak256": "0x5a1c23a4b3afdad849f0639bac47e8c08c1949f0aa531113e06883f9a7ab6662", + "urls": [ + "bzz-raw://a9e6c391948533011c757d89a67cdcc6a741afa7e1c242138c591594d3a3238c", + "dweb:/ipfs/QmfPoN9Dv2AuPBcY1nAdByMAuW1Z7Wj4CnRW3KnRLtiuQM" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/bytesUtils.sol": { + "keccak256": "0x4ea4f266580ca57be6ec7b0d2fe6adb0bf51f978648c3aa65e8d02fe91351522", + "urls": [ + "bzz-raw://b3badb0e0c1dd6b21249852eb2b8fcdd2adffb2aa663926b51241d8eb06d2857", + "dweb:/ipfs/QmRvKPafRARyjdq5duZwx55cxUL4Vi8qvXo5HmQDt5Sq3s" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/controllable.sol": { + "keccak256": "0x8245bddc77a7c5b44dc7f285404193e47b951e9cbba12a765828cb3023f64336", + "urls": [ + "bzz-raw://df426810c455bccd40f5976a2906382e35800fe47e45a1991b4c3684827dd5ad", + "dweb:/ipfs/QmfMrmV9xYTy6NfFnWR4Y29qRzgU8wmiNjkbnYoFUw8YK6" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ensResolvable.sol": { + "keccak256": "0xddb1c7898472491906ebfa73b4c83f8bc946ff3e94e5c8814fe6ea063f3fb665", + "urls": [ + "bzz-raw://7911bc8eb24a89b0eb0e088de4399083af7b2761cce12cd622db715e46994897", + "dweb:/ipfs/QmTz3SyAoGFDopiJuFRES7x155hNFWLF6d9yctJhdNx9m5" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ownable.sol": { + "keccak256": "0x42429c64258acf6e8018aca4fb048760aba8c26e8256d7b7b93be6d542ad8726", + "urls": [ + "bzz-raw://d617ddff648eaffe0b13519b85c1405ed4b57c3a5329d2c950f06485b0f730a3", + "dweb:/ipfs/QmdgX3w1b5psWWEQzRRQ1j2Ej7NNQC1bWxc95YJJFay9f1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/tokenWhitelistable.sol": { + "keccak256": "0x6f0e7922c0be342960f7d3ff610ea3e6e46aa76e1f73f1ff6a529e352532f0a8", + "urls": [ + "bzz-raw://024bf0b3b2df1c5af6cfcd2aa6f281b98b48408b32ac400246a629e539e81ffe", + "dweb:/ipfs/QmNMb6C7a9pzcU7Gu48RBMcV3L3CitpjPiGC3zvNe9wnMj" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/transferrable.sol": { + "keccak256": "0x5f215d0f4f446f068e3948a7b5cf4dd621f4e9c4ba45047b95c4b7ad4c02765d", + "urls": [ + "bzz-raw://cda044581d476790ed11a5f8fb7ccc978e30b8649efa0132f0c701cdf30c2cb0", + "dweb:/ipfs/QmR4oKPAQyfV3wCtsuqT5V2D3BZvsgxV5Wufn5vtAH5ZkJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/licence.sol": { + "keccak256": "0x6adf2a5bc0e6bb1b53ce1a7085b7e10573d8ca6297f5f34e606ccaa4b3079a1c", + "urls": [ + "bzz-raw://d90d7cd882d355a1aec7d88c1bfe8eed85ee30b8ff7f101f7ef1fb4501e700c1", + "dweb:/ipfs/Qmdz8Fzpj9cE8msmcBUEP18KLfrjnvSdFjDf9yxAcCt1KY" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/tokenWhitelist.sol": { + "keccak256": "0x560b9284f40382c95ab64856a7acfd53eb416593053a40cf9f6fe229e08372a0", + "urls": [ + "bzz-raw://e2a217afa376bcb0d901937b52995a33f3ea16dff7e76691b20e761802e4a14b", + "dweb:/ipfs/QmZJhPn8zTtBBE2RQvWLA7FzGLsdbxDcRkMCKiyCw6ypQr" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": { + "keccak256": "0xdb84a948b1cd2f957eb445c541bf7689209c34dbab08ebce9faa0ddfb4aeb47b", + "urls": [ + "bzz-raw://bda80e1f7779ce8582edf170ec8b4d568e1a1f9ab0e171708f39afc0c272e1b3", + "dweb:/ipfs/QmNyeVpgs7ii3bGNbrM1B1yCz1Xs4DwcWKp8DgUm9vz241" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/artifacts/SelfCallableOwnable.json b/contracts/artifacts/SelfCallableOwnable.json new file mode 100644 index 00000000..8a82c798 --- /dev/null +++ b/contracts/artifacts/SelfCallableOwnable.json @@ -0,0 +1,158 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "görli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5061040c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632121dc7514610051578063715018a61461006d5780638da5cb5b14610077578063b242e5341461009b575b600080fd5b6100596100c9565b604080519115158252519081900360200190f35b6100756100d9565b005b61007f6101d7565b604080516001600160a01b039092168252519081900360200190f35b610075600480360360408110156100b157600080fd5b506001600160a01b03813516906020013515156101e6565b603354600160a01b900460ff1690565b6100e2336103a0565b61012c576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603354600160a01b900460ff1661018a576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603380546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b6101ef336103a0565b610239576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603354600160a01b900460ff16610297576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166102dc5760405162461bcd60e51b81526004018080602001828103825260238152602001806103b56023913960400191505060405180910390fd5b6033805460ff60a01b1916600160a01b831515021790558061033557604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603354604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603380546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b039081169116149056fe6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a723158204c8e09772e1397ff3f14e783d4374305957cf8b29b5a64c80f241d2a9e4118c964736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x6D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x9B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xC9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x75 PUSH2 0xD9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x75 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xE2 CALLER PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x12C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1EF CALLER PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x239 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x297 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3B5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x335 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP INVALID PUSH16 0x776E65722063616E6E6F742062652073 PUSH6 0x7420746F207A PUSH6 0x726F20616464 PUSH19 0x657373A265627A7A723158204C8E09772E1397 SELFDESTRUCT EXTCODEHASH EQ 0xE7 DUP4 0xD4 CALLDATACOPY NUMBER SDIV SWAP6 PUSH29 0xF8B29B5A64C80F241D2A9E4118C964736F6C6343000511003200000000 ", + "sourceMap": "1941:237:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1941:237:31;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80632121dc7514610051578063715018a61461006d5780638da5cb5b14610077578063b242e5341461009b575b600080fd5b6100596100c9565b604080519115158252519081900360200190f35b6100756100d9565b005b61007f6101d7565b604080516001600160a01b039092168252519081900360200190f35b610075600480360360408110156100b157600080fd5b506001600160a01b03813516906020013515156101e6565b603354600160a01b900460ff1690565b6100e2336103a0565b61012c576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603354600160a01b900460ff1661018a576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603380546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b6101ef336103a0565b610239576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603354600160a01b900460ff16610297576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166102dc5760405162461bcd60e51b81526004018080602001828103825260238152602001806103b56023913960400191505060405180910390fd5b6033805460ff60a01b1916600160a01b831515021790558061033557604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603354604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603380546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b039081169116149056fe6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a723158204c8e09772e1397ff3f14e783d4374305957cf8b29b5a64c80f241d2a9e4118c964736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x6D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x77 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x9B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xC9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x75 PUSH2 0xD9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x7F PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x75 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xE2 CALLER PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x12C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x1EF CALLER PUSH2 0x3A0 JUMP JUMPDEST PUSH2 0x239 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x297 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3B5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x33 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x335 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP INVALID PUSH16 0x776E65722063616E6E6F742062652073 PUSH6 0x7420746F207A PUSH6 0x726F20616464 PUSH19 0x657373A265627A7A723158204C8E09772E1397 SELFDESTRUCT EXTCODEHASH EQ 0xE7 DUP4 0xD4 CALLDATACOPY NUMBER SDIV SWAP6 PUSH29 0xF8B29B5A64C80F241D2A9E4118C964736F6C6343000511003200000000 ", + "sourceMap": "1941:237:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1941:237:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2749:94:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;3119:306;;;:::i;:::-;;3508:85;;;:::i;:::-;;;;-1:-1:-1;;;;;3508:85:26;;;;;;;;;;;;;;1823:809;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1823:809:26;;;;;;;;;;:::i;2749:94::-;2821:15;;-1:-1:-1;;;2821:15:26;;;;;2749:94::o;3119:306::-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;3240:15;;-1:-1:-1;;;3240:15:26;;;;3232:57;;;;;-1:-1:-1;;;3232:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;3343:6;:19;;-1:-1:-1;;;;;;3343:19:26;;;3378:40;;;3360:1;3378:40;;;;;;;;;;;;;;;;;;;;3119:306::o;3508:85::-;3580:6;;-1:-1:-1;;;;;3580:6:26;3508:85;:::o;1823:809::-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;1988:15;;-1:-1:-1;;;1988:15:26;;;;1980:57;;;;;-1:-1:-1;;;1980:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:22:26;;2110:70;;;;-1:-1:-1;;;2110:70:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:15;:31;;-1:-1:-1;;;;2265:31:26;-1:-1:-1;;;2265:31:26;;;;;;;;2375:75;;2414:25;;;-1:-1:-1;;;;;2414:25:26;;;;;;;;;;;;;;;2375:75;2531:6;;2510:38;;;-1:-1:-1;;;;;2531:6:26;;;2510:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2608:6:26;:17;;-1:-1:-1;;;;;;2608:17:26;-1:-1:-1;;;;;2608:17:26;;;;;;;;;;1823:809::o;4191:107::-;4285:6;;-1:-1:-1;;;;;4285:6:26;;;4273:18;;;;4191:107::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "207200", + "executionCost": "251", + "totalCost": "207451" + }, + "external": { + "isTransferable()": "1005", + "owner()": "1059", + "renounceOwnership()": "24033", + "transferOwnership(address,bool)": "infinite" + } + }, + "methodIdentifiers": { + "isTransferable()": "2121dc75", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address,bool)": "b242e534" + } + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/artifacts/SelfCallableOwnable_metadata.json b/contracts/artifacts/SelfCallableOwnable_metadata.json new file mode 100644 index 00000000..0b02081e --- /dev/null +++ b/contracts/artifacts/SelfCallableOwnable_metadata.json @@ -0,0 +1,377 @@ +{ + "compiler": { + "version": "0.5.17+commit.d19bba13" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "details": "providing an additional modifier to check if Owner or self is callingthe \"self\" here is used for the meta transactions", + "methods": { + "isTransferable()": { + "return": "true if the ownership is transferable." + }, + "owner()": { + "return": "address of the owner." + }, + "renounceOwnership()": { + "details": "Renouncing to ownership will leave the contract without an owner and unusable.It will not be possible to call the functions with the `onlyOwner` modifier anymore." + }, + "transferOwnership(address,bool)": { + "params": { + "_account": "address to transfer ownership to.", + "_transferable": "indicates whether to keep the ownership transferable." + } + } + }, + "title": "SelfCallableOwnable allows either owner or the contract itself to call its functions" + }, + "userdoc": { + "methods": { + "isTransferable()": { + "notice": "check if the ownership is transferable." + }, + "owner()": { + "notice": "Find out owner address" + }, + "renounceOwnership()": { + "notice": "Allows the current owner to relinquish control of the contract." + }, + "transferOwnership(address,bool)": { + "notice": "Allows the current owner to transfer control of the contract to a new address." + } + } + } + }, + "settings": { + "compilationTarget": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": "SelfCallableOwnable" + }, + "evmVersion": "istanbul", + "libraries": {}, + "optimizer": { + "enabled": true, + "runs": 200 + }, + "remappings": [] + }, + "sources": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/controller.sol": { + "keccak256": "0xb68e6d7092e8e9b3a914aea22172dce9c26dfa9805ba819958b5b8dde7dfd50f", + "urls": [ + "bzz-raw://a1cdba6a1bfc923815b2c1116327c1951ecf40ea8c67ae2456e1c4c50217eb61", + "dweb:/ipfs/QmX4rCEuMEBg6X3cpKdjTtxgNYBrCJyyA51KRR8vbE6sDF" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": { + "keccak256": "0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1", + "urls": [ + "bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf", + "dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ECDSA.sol": { + "keccak256": "0xfc3dde0661847b56e4ff8926be7e4cde9d960cbe18480e01ee648cfbf5d4055a", + "urls": [ + "bzz-raw://d8747b09cbf2ee6d96d21a990fcf326f08084c79fcfad5ed331d64b5705487d9", + "dweb:/ipfs/QmPsy6pKdNtGndw5PMRAXEQ8pVKEMuLvAbgxffZ9cXL4T1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC165.sol": { + "keccak256": "0xaca91baae00478feaafaedff2fc8ebd3d6738c7877ad78d9565ef328f683f4e8", + "urls": [ + "bzz-raw://c55b05166c731d830498a2dd576c6b19ba114e73eb5011dc684f368cb84c5216", + "dweb:/ipfs/QmVyYr64yP1aqFvhBSZeJtzMaPdLyF9w8pytudogFWKtur" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC20.sol": { + "keccak256": "0x54628c1175e0e40ff56df85e92bd9b4e5ee1614600713379ff885bd07f6ef010", + "urls": [ + "bzz-raw://2a0a4531eb59752b7c3315f3c796d2ce2befb0d21eca1908eb94f44873e458de", + "dweb:/ipfs/QmbrqZGUQZaSpYndb9eQ9WVEeboRBHaomma91tpD4ESWeE" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeERC20.sol": { + "keccak256": "0xa654c1247c418db9eb3034e5b795760d2048864625f509a0e81632351e4199c0", + "urls": [ + "bzz-raw://3798f03a8e74dcf0c90072c3f88ccc8be887b9fd9707b063e4c47df0a610478b", + "dweb:/ipfs/QmSaY9ZKzihx5GC3h9XiUmBpQbwhRQw93yasRqxp45cXBJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeMath.sol": { + "keccak256": "0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690", + "urls": [ + "bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610", + "dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENS.sol": { + "keccak256": "0x5d115f126a237cfccc6c687301f87bf3210b7f68594ef780d796caa6e72d6060", + "urls": [ + "bzz-raw://6ca3f8dbd17933dd487c532fcfddc42ec7b46f7ccc84cfcb266cbf8bf453758c", + "dweb:/ipfs/QmcrckQwvrffFdSgrC5txQw5xNruAVtkDQ2aj9V1MtVwKD" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENSBytesUtils.sol": { + "keccak256": "0xe9599418173f34cc89c737059f398ba9a9f5e8a44c67af218bb3373c589f3499", + "urls": [ + "bzz-raw://b20acd1d67c676364e862f4cecdcfc4ade3efc22445fb6fda4a801f6d865bde1", + "dweb:/ipfs/QmW2EP3T1y6kLtfB2rZFhqFBFWzUthvC1DZWzTfVLehPsy" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/PublicResolver.sol": { + "keccak256": "0xdc5767dd5f4c192c3085e89bcc3ab791ab4e3e082f03bfdca1e48f75a0ce72aa", + "urls": [ + "bzz-raw://d4cd247165490f08c6903e99dd86f8a6d279763b0a79660e544a7b8ae0e071dd", + "dweb:/ipfs/QmRyepaRuSLF8QNkV5QSwoTtc6BjX3Kr7KP8GQuCtWp1MH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/RRUtils.sol": { + "keccak256": "0x7be2b14a352eda9d632f2969e8ae00e6e2bf8cb286a0e1d9c3fb2af0b9d2d799", + "urls": [ + "bzz-raw://df3a4d1fb8e19407921d1dfe3a1b8029eb4dd7321f8dc66e16bb97590ce6ff3b", + "dweb:/ipfs/QmV2UTNqJAhiAGBYjUMZYuvvWpj43WC3VpZivmW3LSpfdc" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ResolverBase.sol": { + "keccak256": "0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8", + "urls": [ + "bzz-raw://dc477afd53175b96112bb0e2e25ce85b1f7c0e3fe0da4a2e8539d86712583b00", + "dweb:/ipfs/QmQdwwHEcNMxTWtkrNpkbxtokwiFDdQ5xwPYcuZPRbJQKp" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ABIResolver.sol": { + "keccak256": "0x794514d39c469bab511822ca7a1a7a7838dca338499889896c7dac4303c30c1f", + "urls": [ + "bzz-raw://3668c3ec6be58cf6bbbe2cfcb8e286927fa5ab028d501c8b26d2eeb816ce7303", + "dweb:/ipfs/Qme7RMhhcFxa1xzhJz24s3rdW2VePsPdJhFgQbAiieMjKz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/AddrResolver.sol": { + "keccak256": "0x4d6a95626f02bfc6e5ee75cde2a38e67e9eb9aada78473e05b7003ebd60d8ffb", + "urls": [ + "bzz-raw://45407b2f99a29d0cc3df3636ecc5316414d6eb855860e382dffa57329886d74a", + "dweb:/ipfs/QmaKTuaHdy7ADgPY718fsiwjn2Hd6dqxPtgRcwjNxtdunG" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ContentHashResolver.sol": { + "keccak256": "0xaa3d9b9baae36fbf831b8297832b54ffd1023b9ac508f2c5068b92ce0c30edfc", + "urls": [ + "bzz-raw://a30f83bbf8d55051bdc0b151131e5dca4966fe87f36648f9bf3e580d81d85fa2", + "dweb:/ipfs/QmbWeakvTkEJTRxqFL6wZPDdN6Wqq1tSgCJiu861UbH3yH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/DNSResolver.sol": { + "keccak256": "0x348116b6a303561102f057b89ce14b1bdc5a254c701380cdb1c682adf7e0f749", + "urls": [ + "bzz-raw://8cc58072164c74bf520a061918c422554097134f74854f0b3e1093ba36798f24", + "dweb:/ipfs/QmSsDaHZSjjNZVzbmkxhAKNkjpWMKtMKEVh9cLbskW4NJn" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/InterfaceResolver.sol": { + "keccak256": "0x6398dc59dd38501acd6a716173793e84aa1c454c3e21c190e10ddbe54dd8be41", + "urls": [ + "bzz-raw://7b3af5c29db8d4c13631b3ec427e5dc6dee1a5df0560d36b32deda2451e4bc11", + "dweb:/ipfs/QmXe2sWt31kEELa4VPU84QUUK6UDw6mQANc9gMVezoqioP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/NameResolver.sol": { + "keccak256": "0xcff06da8901397164ca9bea36361ac518fb62cd5283d2e2e835e006980ba4d16", + "urls": [ + "bzz-raw://ab5b2748d4297385b92a83aafdc79fc343842ee71e9537fa9c8cf4d2fbd4aeb0", + "dweb:/ipfs/QmZzZYyiRxZU271QDKhL4F4VdCfx5dZq4fT9Ud786XtiZz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/PubkeyResolver.sol": { + "keccak256": "0xaa10a8a7e1579987b6781657153ae3f16806f240b3ffaa54ea1f303f7cb7a74a", + "urls": [ + "bzz-raw://3ee3cbb2cca361819cea208485c718a3288cf9dc22762bb08c3dc445b60dc862", + "dweb:/ipfs/QmeXyPzZHyPMSHvQPDsCtjdC3rMCTzZNWeYXaWqiDbdmSt" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/TextResolver.sol": { + "keccak256": "0xdfb11cd7e9aef793d88c517195a6d3ac4736aa2aa7f27baafc2541bb2c639774", + "urls": [ + "bzz-raw://84b3d3a186a91c242a729be0da2ad1b705a332472cea0c81d81d4b8e309f3440", + "dweb:/ipfs/QmQTKAyoS6DEUUNVKb5aECk3GBGb7AZNGSV4untv1ZNngi" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/initializable.sol": { + "keccak256": "0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721", + "urls": [ + "bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f", + "dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/strings.sol": { + "keccak256": "0xd7c99d0733e73dc27cba285890b254d36d070807da9e60a573dcc4b5ec3c6f3d", + "urls": [ + "bzz-raw://95845b2178b081aa0ad872f04694fd87f9553d0f78b8e079ce98773dbafc9033", + "dweb:/ipfs/QmPsNebBo51KzdM7ewAPJ5weCL7J5Piy2y1Hgcto2TmvDP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/balanceable.sol": { + "keccak256": "0x5a1c23a4b3afdad849f0639bac47e8c08c1949f0aa531113e06883f9a7ab6662", + "urls": [ + "bzz-raw://a9e6c391948533011c757d89a67cdcc6a741afa7e1c242138c591594d3a3238c", + "dweb:/ipfs/QmfPoN9Dv2AuPBcY1nAdByMAuW1Z7Wj4CnRW3KnRLtiuQM" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/bytesUtils.sol": { + "keccak256": "0x4ea4f266580ca57be6ec7b0d2fe6adb0bf51f978648c3aa65e8d02fe91351522", + "urls": [ + "bzz-raw://b3badb0e0c1dd6b21249852eb2b8fcdd2adffb2aa663926b51241d8eb06d2857", + "dweb:/ipfs/QmRvKPafRARyjdq5duZwx55cxUL4Vi8qvXo5HmQDt5Sq3s" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/controllable.sol": { + "keccak256": "0x8245bddc77a7c5b44dc7f285404193e47b951e9cbba12a765828cb3023f64336", + "urls": [ + "bzz-raw://df426810c455bccd40f5976a2906382e35800fe47e45a1991b4c3684827dd5ad", + "dweb:/ipfs/QmfMrmV9xYTy6NfFnWR4Y29qRzgU8wmiNjkbnYoFUw8YK6" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ensResolvable.sol": { + "keccak256": "0xddb1c7898472491906ebfa73b4c83f8bc946ff3e94e5c8814fe6ea063f3fb665", + "urls": [ + "bzz-raw://7911bc8eb24a89b0eb0e088de4399083af7b2761cce12cd622db715e46994897", + "dweb:/ipfs/QmTz3SyAoGFDopiJuFRES7x155hNFWLF6d9yctJhdNx9m5" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ownable.sol": { + "keccak256": "0x42429c64258acf6e8018aca4fb048760aba8c26e8256d7b7b93be6d542ad8726", + "urls": [ + "bzz-raw://d617ddff648eaffe0b13519b85c1405ed4b57c3a5329d2c950f06485b0f730a3", + "dweb:/ipfs/QmdgX3w1b5psWWEQzRRQ1j2Ej7NNQC1bWxc95YJJFay9f1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/tokenWhitelistable.sol": { + "keccak256": "0x6f0e7922c0be342960f7d3ff610ea3e6e46aa76e1f73f1ff6a529e352532f0a8", + "urls": [ + "bzz-raw://024bf0b3b2df1c5af6cfcd2aa6f281b98b48408b32ac400246a629e539e81ffe", + "dweb:/ipfs/QmNMb6C7a9pzcU7Gu48RBMcV3L3CitpjPiGC3zvNe9wnMj" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/transferrable.sol": { + "keccak256": "0x5f215d0f4f446f068e3948a7b5cf4dd621f4e9c4ba45047b95c4b7ad4c02765d", + "urls": [ + "bzz-raw://cda044581d476790ed11a5f8fb7ccc978e30b8649efa0132f0c701cdf30c2cb0", + "dweb:/ipfs/QmR4oKPAQyfV3wCtsuqT5V2D3BZvsgxV5Wufn5vtAH5ZkJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/licence.sol": { + "keccak256": "0x6adf2a5bc0e6bb1b53ce1a7085b7e10573d8ca6297f5f34e606ccaa4b3079a1c", + "urls": [ + "bzz-raw://d90d7cd882d355a1aec7d88c1bfe8eed85ee30b8ff7f101f7ef1fb4501e700c1", + "dweb:/ipfs/Qmdz8Fzpj9cE8msmcBUEP18KLfrjnvSdFjDf9yxAcCt1KY" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/tokenWhitelist.sol": { + "keccak256": "0x560b9284f40382c95ab64856a7acfd53eb416593053a40cf9f6fe229e08372a0", + "urls": [ + "bzz-raw://e2a217afa376bcb0d901937b52995a33f3ea16dff7e76691b20e761802e4a14b", + "dweb:/ipfs/QmZJhPn8zTtBBE2RQvWLA7FzGLsdbxDcRkMCKiyCw6ypQr" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": { + "keccak256": "0xdb84a948b1cd2f957eb445c541bf7689209c34dbab08ebce9faa0ddfb4aeb47b", + "urls": [ + "bzz-raw://bda80e1f7779ce8582edf170ec8b4d568e1a1f9ab0e171708f39afc0c272e1b3", + "dweb:/ipfs/QmNyeVpgs7ii3bGNbrM1B1yCz1Xs4DwcWKp8DgUm9vz241" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/artifacts/SpendLimit.json b/contracts/artifacts/SpendLimit.json new file mode 100644 index 00000000..b390ba51 --- /dev/null +++ b/contracts/artifacts/SpendLimit.json @@ -0,0 +1,359 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "görli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760345534801561005557600080fd5b50610b1c806100656000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d73b2311161008c578063b242e53411610066578063b242e5341461018a578063bcb8b74a146101b8578063e2b4ce97146101c0578063eadd3cea146101c8576100cf565b80637d73b231146101565780638da5cb5b1461017a5780639b0dfd2714610182576100cf565b8063027ef3eb146100d45780632121dc75146100ee57806321ce918d1461010a5780633c672eb7146101295780635d2362a814610146578063715018a61461014e575b600080fd5b6100dc6101e5565b60408051918252519081900360200190f35b6100f66101eb565b604080519115158252519081900360200190f35b6101276004803603602081101561012057600080fd5b50356101fb565b005b6101276004803603602081101561013f57600080fd5b5035610299565b6100dc61033f565b610127610350565b61015e61044e565b604080516001600160a01b039092168252519081900360200190f35b61015e61045d565b6100dc61046c565b610127600480360360408110156101a057600080fd5b506001600160a01b0381351690602001351515610472565b6100f661062c565b6100dc610635565b610127600480360360208110156101de57600080fd5b503561063b565b60395490565b603554600160a01b900460ff1690565b610204336106a6565b8061020e57503330145b610252576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b61026360368263ffffffff6106bd16565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b6102a2336106a6565b806102ac57503330145b6102f0576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b61030160368263ffffffff61071e16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b600061034b6036610787565b905090565b610359336106a6565b6103a3576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16610401576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b6035546001600160a01b031690565b60365490565b61047b336106a6565b6104c5576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16610523576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166105685760405162461bcd60e51b8152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b83151502179055806105c157604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5460ff1690565b60345490565b610644336107bc565b610695576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b61030160368263ffffffff61085016565b6035546001600160a01b038281169116145b919050565b600482015460ff16610716576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b600482015460ff161561076c576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b61077682826108a4565b50600401805460ff19166001179055565b60028101546000906107a2906201518063ffffffff6108c716565b4211156107b1575080546106b8565b5060018101546106b8565b60006107c9603454610928565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561081e57600080fd5b505afa158015610832573d6000803e3d6000fd5b505050506040513d602081101561084857600080fd5b505192915050565b808260030154146108925760405162461bcd60e51b8152600401808060200182810382526022815260200180610aa36022913960400191505060405180910390fd5b6108a08283600301546108a4565b5050565b6108ad82610a49565b80825560018201548110156108a057815460018301555050565b600082820183811015610921576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6033546000906001600160a01b0316610988576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d60208110156109fe57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561081e57600080fd5b6002810154610a61906201518063ffffffff6108c716565b421115610a9f57426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b5056fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a7231582029f0b0eca1ccb82008b2fc6ef732a75b7fa928a2754a4f390b46c0c48063075f64736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH15 0xC2E074EC69A0DFB2997BA6C7D2E1E OR SWAP1 SSTORE PUSH32 0x7F2CE995617D2816B426C5C8698C5EC2952F7A34BB10F38326F74933D5893697 PUSH1 0x34 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB1C DUP1 PUSH2 0x65 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7D73B231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xB242E534 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0xBCB8B74A EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xEADD3CEA EQ PUSH2 0x1C8 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x9B0DFD27 EQ PUSH2 0x182 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x27EF3EB EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x21CE918D EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x3C672EB7 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x5D2362A8 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x14E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x1E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF6 PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1FB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x299 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x33F JUMP JUMPDEST PUSH2 0x127 PUSH2 0x350 JUMP JUMPDEST PUSH2 0x15E PUSH2 0x44E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15E PUSH2 0x45D JUMP JUMPDEST PUSH2 0xDC PUSH2 0x46C JUMP JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x472 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x62C JUMP JUMPDEST PUSH2 0xDC PUSH2 0x635 JUMP JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x63B JUMP JUMPDEST PUSH1 0x39 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x204 CALLER PUSH2 0x6A6 JUMP JUMPDEST DUP1 PUSH2 0x20E JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x252 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x263 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6BD AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x4B1B970C8A0FA761E7803ED70C13D7ACA71904B13DF60FBE03F981DA1730DA91 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x2A2 CALLER PUSH2 0x6A6 JUMP JUMPDEST DUP1 PUSH2 0x2AC JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x2F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x301 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x71E AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x68F112E5EC923D412BE64779FE69E0FCBB6784C6617E94CCCC8FD348F2E0F21 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34B PUSH1 0x36 PUSH2 0x787 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x359 CALLER PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x401 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x47B CALLER PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x4C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x523 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x568 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x5C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x644 CALLER PUSH2 0x7BC JUMP JUMPDEST PUSH2 0x695 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x301 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x850 AND JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x716 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C696D6974206861736E2774206265656E207365742079657400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x76C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1B1A5B5A5D08185B1C9958591E481CD95D PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x776 DUP3 DUP3 PUSH2 0x8A4 JUMP JUMPDEST POP PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x7A2 SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x8C7 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x7B1 JUMPI POP DUP1 SLOAD PUSH2 0x6B8 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x6B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C9 PUSH1 0x34 SLOAD PUSH2 0x928 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x832 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x848 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 PUSH1 0x3 ADD SLOAD EQ PUSH2 0x892 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAA3 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8A0 DUP3 DUP4 PUSH1 0x3 ADD SLOAD PUSH2 0x8A4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x8AD DUP3 PUSH2 0xA49 JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x8A0 JUMPI DUP2 SLOAD PUSH1 0x1 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x921 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x988 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0xA61 SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x8C7 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0xA9F JUMPI TIMESTAMP PUSH1 0x2 DUP3 ADD SSTORE DUP1 SLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xE93BC25276D408D390778E7A8B926F2F67209C43ED540081B951FE128F0D3CD2 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP JUMP INVALID PUSH4 0x6F6E6669 PUSH19 0x6D65642F7375626D6974746564206C696D6974 KECCAK256 PUSH14 0x69736D617463686F776E65722063 PUSH2 0x6E6E PUSH16 0x742062652073657420746F207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A7231582029F0B0ECA1CCB8 KECCAK256 ADDMOD 0xB2 0xFC PUSH15 0xF732A75B7FA928A2754A4F390B46C0 0xC4 DUP1 PUSH4 0x75F6473 PUSH16 0x6C634300051100320000000000000000 ", + "sourceMap": "14965:2077:31:-;;;1311:82:25;;;-1:-1:-1;;;;;;1311:82:25;1350:42;1311:82;;;1162:66:24;1312:58;;14965:2077:31;5:2:-1;;;;30:1;27;20:12;5:2;14965:2077:31;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637d73b2311161008c578063b242e53411610066578063b242e5341461018a578063bcb8b74a146101b8578063e2b4ce97146101c0578063eadd3cea146101c8576100cf565b80637d73b231146101565780638da5cb5b1461017a5780639b0dfd2714610182576100cf565b8063027ef3eb146100d45780632121dc75146100ee57806321ce918d1461010a5780633c672eb7146101295780635d2362a814610146578063715018a61461014e575b600080fd5b6100dc6101e5565b60408051918252519081900360200190f35b6100f66101eb565b604080519115158252519081900360200190f35b6101276004803603602081101561012057600080fd5b50356101fb565b005b6101276004803603602081101561013f57600080fd5b5035610299565b6100dc61033f565b610127610350565b61015e61044e565b604080516001600160a01b039092168252519081900360200190f35b61015e61045d565b6100dc61046c565b610127600480360360408110156101a057600080fd5b506001600160a01b0381351690602001351515610472565b6100f661062c565b6100dc610635565b610127600480360360208110156101de57600080fd5b503561063b565b60395490565b603554600160a01b900460ff1690565b610204336106a6565b8061020e57503330145b610252576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b61026360368263ffffffff6106bd16565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b6102a2336106a6565b806102ac57503330145b6102f0576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b61030160368263ffffffff61071e16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b600061034b6036610787565b905090565b610359336106a6565b6103a3576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16610401576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b6033546001600160a01b031690565b6035546001600160a01b031690565b60365490565b61047b336106a6565b6104c5576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16610523576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166105685760405162461bcd60e51b8152600401808060200182810382526023815260200180610ac56023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b83151502179055806105c157604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603a5460ff1690565b60345490565b610644336107bc565b610695576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b61030160368263ffffffff61085016565b6035546001600160a01b038281169116145b919050565b600482015460ff16610716576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b600482015460ff161561076c576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b61077682826108a4565b50600401805460ff19166001179055565b60028101546000906107a2906201518063ffffffff6108c716565b4211156107b1575080546106b8565b5060018101546106b8565b60006107c9603454610928565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561081e57600080fd5b505afa158015610832573d6000803e3d6000fd5b505050506040513d602081101561084857600080fd5b505192915050565b808260030154146108925760405162461bcd60e51b8152600401808060200182810382526022815260200180610aa36022913960400191505060405180910390fd5b6108a08283600301546108a4565b5050565b6108ad82610a49565b80825560018201548110156108a057815460018301555050565b600082820183811015610921576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6033546000906001600160a01b0316610988576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d60208110156109fe57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561081e57600080fd5b6002810154610a61906201518063ffffffff6108c716565b421115610a9f57426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b5056fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373a265627a7a7231582029f0b0eca1ccb82008b2fc6ef732a75b7fa928a2754a4f390b46c0c48063075f64736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7D73B231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xB242E534 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0xBCB8B74A EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xEADD3CEA EQ PUSH2 0x1C8 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x7D73B231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x9B0DFD27 EQ PUSH2 0x182 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x27EF3EB EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x21CE918D EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x3C672EB7 EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x5D2362A8 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x14E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x1E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF6 PUSH2 0x1EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1FB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x299 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x33F JUMP JUMPDEST PUSH2 0x127 PUSH2 0x350 JUMP JUMPDEST PUSH2 0x15E PUSH2 0x44E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15E PUSH2 0x45D JUMP JUMPDEST PUSH2 0xDC PUSH2 0x46C JUMP JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x472 JUMP JUMPDEST PUSH2 0xF6 PUSH2 0x62C JUMP JUMPDEST PUSH2 0xDC PUSH2 0x635 JUMP JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x63B JUMP JUMPDEST PUSH1 0x39 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x204 CALLER PUSH2 0x6A6 JUMP JUMPDEST DUP1 PUSH2 0x20E JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x252 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x263 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6BD AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x4B1B970C8A0FA761E7803ED70C13D7ACA71904B13DF60FBE03F981DA1730DA91 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x2A2 CALLER PUSH2 0x6A6 JUMP JUMPDEST DUP1 PUSH2 0x2AC JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x2F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x301 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x71E AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x68F112E5EC923D412BE64779FE69E0FCBB6784C6617E94CCCC8FD348F2E0F21 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34B PUSH1 0x36 PUSH2 0x787 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x359 CALLER PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x3A3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x401 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x36 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x47B CALLER PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x4C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x523 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x568 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAC5 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x5C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x644 CALLER PUSH2 0x7BC JUMP JUMPDEST PUSH2 0x695 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F74206120636F6E74726F6C6C6572000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x301 PUSH1 0x36 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x850 AND JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND SWAP2 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x716 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C696D6974206861736E2774206265656E207365742079657400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x76C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1B1A5B5A5D08185B1C9958591E481CD95D PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x776 DUP3 DUP3 PUSH2 0x8A4 JUMP JUMPDEST POP PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x7A2 SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x8C7 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x7B1 JUMPI POP DUP1 SLOAD PUSH2 0x6B8 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x6B8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C9 PUSH1 0x34 SLOAD PUSH2 0x928 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x832 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x848 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 PUSH1 0x3 ADD SLOAD EQ PUSH2 0x892 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAA3 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8A0 DUP3 DUP4 PUSH1 0x3 ADD SLOAD PUSH2 0x8A4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x8AD DUP3 PUSH2 0xA49 JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x8A0 JUMPI DUP2 SLOAD PUSH1 0x1 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x921 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x988 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0xA61 SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x8C7 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0xA9F JUMPI TIMESTAMP PUSH1 0x2 DUP3 ADD SSTORE DUP1 SLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xE93BC25276D408D390778E7A8B926F2F67209C43ED540081B951FE128F0D3CD2 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMPDEST POP JUMP INVALID PUSH4 0x6F6E6669 PUSH19 0x6D65642F7375626D6974746564206C696D6974 KECCAK256 PUSH14 0x69736D617463686F776E65722063 PUSH2 0x6E6E PUSH16 0x742062652073657420746F207A65726F KECCAK256 PUSH2 0x6464 PUSH19 0x657373A265627A7A7231582029F0B0ECA1CCB8 KECCAK256 ADDMOD 0xB2 0xFC PUSH15 0xF732A75B7FA928A2754A4F390B46C0 0xC4 DUP1 PUSH4 0x75F6473 PUSH16 0x6C634300051100320000000000000000 ", + "sourceMap": "14965:2077:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14965:2077:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16037:104;;;:::i;:::-;;;;;;;;;;;;;;;;2749:94:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;16644:179:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16644:179:31;;:::i;:::-;;15655:161;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15655:161:31;;:::i;15861:119::-;;;:::i;3119:306:26:-;;;:::i;1695:89:25:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1695:89:25;;;;;;;;;;;;;;3508:85:26;;;:::i;16400:100:31:-;;;:::i;1823:809:26:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1823:809:26;;;;;;;;;;:::i;16197:147:31:-;;;:::i;1778:95:24:-;;;:::i;15318:180:31:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15318:180:31;;:::i;16037:104::-;16115:19;;16037:104;:::o;2749:94:26:-;2821:15;;-1:-1:-1;;;2821:15:26;;;;;2749:94::o;16644:179:31:-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;16728:39;:11;16759:7;16728:39;:30;:39;:::i;:::-;16782:34;;;;;;;;;;;;;;;;;16644:179;:::o;15655:161::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;15730:30;:11;15752:7;15730:30;:21;:30;:::i;:::-;15775:34;;;15789:10;15775:34;;;;;;;;;;;;;;;;;;;;;15655:161;:::o;15861:119::-;15915:7;15941:32;:11;:30;:32::i;:::-;15934:39;;15861:119;:::o;3119:306:26:-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;3240:15;;-1:-1:-1;;;3240:15:26;;;;3232:57;;;;;-1:-1:-1;;;3232:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;3343:6;:19;;-1:-1:-1;;;;;;3343:19:26;;;3378:40;;;3360:1;3378:40;;;;;;;;;;;;;;;;;;;;3119:306::o;1695:89:25:-;1765:12;;-1:-1:-1;;;;;1765:12:25;1695:89;:::o;3508:85:26:-;3580:6;;-1:-1:-1;;;;;3580:6:26;3508:85;:::o;16400:100:31:-;16476:11;:17;16400:100;:::o;1823:809:26:-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;1988:15;;-1:-1:-1;;;1988:15:26;;;;1980:57;;;;;-1:-1:-1;;;1980:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:22:26;;2110:70;;;;-1:-1:-1;;;2110:70:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:15;:31;;-1:-1:-1;;;;2265:31:26;-1:-1:-1;;;2265:31:26;;;;;;;;2375:75;;2414:25;;;-1:-1:-1;;;;;2414:25:26;;;;;;;;;;;;;;;2375:75;2531:6;;2510:38;;;-1:-1:-1;;;;;2531:6:26;;;2510:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2608:6:26;:17;;-1:-1:-1;;;;;;2608:17:26;-1:-1:-1;;;;;2608:17:26;;;;;;;;;;1823:809::o;16197:147:31:-;16295:42;;;;16197:147;:::o;1778:95:24:-;1851:15;;1778:95;:::o;15318:180:31:-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;15402:40:31;:11;15434:7;15402:40;:31;:40;:::i;4191:107:26:-;4285:6;;-1:-1:-1;;;;;4273:18:26;;;4285:6;;4273:18;4191:107;;;;:::o;14142:317:31:-;14293:35;;;;;;14285:73;;;;;-1:-1:-1;;;14285:73:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;14430:12;;;;:22;14142:317::o;13606:401::-;13757:35;;;;;;13756:36;13748:66;;;;;-1:-1:-1;;;13748:66:31;;;;;;;;;;;;-1:-1:-1;;;13748:66:31;;;;;;;;;;;;;;;13883:27;13896:4;13902:7;13883:12;:27::i;:::-;-1:-1:-1;13958:35:31;;:42;;-1:-1:-1;;13958:42:31;13996:4;13958:42;;;13606:401::o;12691:240::-;12796:19;;;;12767:7;;12796:33;;12820:8;12796:33;:23;:33;:::i;:::-;12790:3;:39;12786:139;;;-1:-1:-1;12852:10:31;;12845:17;;12786:139;-1:-1:-1;12900:14:31;;;;12893:21;;2393:158:24;2457:4;2492:28;2504:15;;2492:11;:28::i;:::-;-1:-1:-1;;;;;2480:54:24;;2535:8;2480:64;;;;;;;;;;;;;-1:-1:-1;;;;;2480:64:24;-1:-1:-1;;;;;2480:64:24;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2480:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2480:64:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2480:64:24;;2393:158;-1:-1:-1;;2393:158:24:o;11788:338:31:-;11973:7;11957:4;:12;;;:23;11949:70;;;;-1:-1:-1;;;11949:70:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12087:32;12100:4;12106;:12;;;12087;:32::i;:::-;11788:338;;:::o;13077:425::-;13211:27;13233:4;13211:21;:27::i;:::-;13303:20;;;13415:14;;;;:27;-1:-1:-1;13411:85:31;;;13475:10;;13458:14;;;:27;13077:425;;:::o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1971:165:25:-;1549:12;;2042:7;;-1:-1:-1;;;;;1549:12:25;1541:68;;;;;-1:-1:-1;;;1541:68:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:12;;2083:33;;;-1:-1:-1;;;2083:33:25;;;;;;;;;;-1:-1:-1;;;;;2087:12:25;;;;2083:26;;:33;;;;;;;;;;;;;;;2087:12;2083:33;;;5:2:-1;;;;30:1;27;20:12;5:2;2083:33:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2083:33:25;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2083:33:25;2068:61;;;-1:-1:-1;;;2068:61:25;;;;;;;;;;-1:-1:-1;;;;;2068:54:25;;;;;;:61;;;;;2083:33;;2068:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;14533:370:31;14617:19;;;;:33;;14641:8;14617:33;:23;:33;:::i;:::-;14611:3;:39;14607:290;;;14733:3;14711:19;;;:25;14834:10;;14817:14;;;:27;14863:23;;;;14834:10;;14863:23;14607:290;14533:370;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "568800", + "executionCost": "41442", + "totalCost": "610242" + }, + "external": { + "confirmSpendLimitUpdate(uint256)": "infinite", + "controllerNode()": "1064", + "ensRegistry()": "1060", + "isTransferable()": "1050", + "owner()": "1082", + "renounceOwnership()": "24150", + "setSpendLimit(uint256)": "infinite", + "spendLimitAvailable()": "infinite", + "spendLimitControllerConfirmationRequired()": "1054", + "spendLimitPending()": "999", + "spendLimitValue()": "1065", + "submitSpendLimitUpdate(uint256)": "infinite", + "transferOwnership(address,bool)": "infinite" + }, + "internal": { + "_initializeSpendLimit(uint256)": "infinite" + } + }, + "methodIdentifiers": { + "confirmSpendLimitUpdate(uint256)": "eadd3cea", + "controllerNode()": "e2b4ce97", + "ensRegistry()": "7d73b231", + "isTransferable()": "2121dc75", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "setSpendLimit(uint256)": "3c672eb7", + "spendLimitAvailable()": "5d2362a8", + "spendLimitControllerConfirmationRequired()": "bcb8b74a", + "spendLimitPending()": "027ef3eb", + "spendLimitValue()": "9b0dfd27", + "submitSpendLimitUpdate(uint256)": "21ce918d", + "transferOwnership(address,bool)": "b242e534" + } + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetSpendLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedSpendLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmSpendLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setSpendLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitSpendLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/artifacts/SpendLimit_metadata.json b/contracts/artifacts/SpendLimit_metadata.json new file mode 100644 index 00000000..cce5ccf0 --- /dev/null +++ b/contracts/artifacts/SpendLimit_metadata.json @@ -0,0 +1,589 @@ +{ + "compiler": { + "version": "0.5.17+commit.d19bba13" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetSpendLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedSpendLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmSpendLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setSpendLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitSpendLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": { + "confirmSpendLimitUpdate(uint256)": { + "details": "Confirm pending set daily limit operation." + }, + "controllerNode()": { + "return": "the controller node registered in ENS." + }, + "ensRegistry()": { + "return": "Current address of the ENS registry contract." + }, + "isTransferable()": { + "return": "true if the ownership is transferable." + }, + "owner()": { + "return": "address of the owner." + }, + "renounceOwnership()": { + "details": "Renouncing to ownership will leave the contract without an owner and unusable.It will not be possible to call the functions with the `onlyOwner` modifier anymore." + }, + "setSpendLimit(uint256)": { + "details": "Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.", + "params": { + "_amount": "is the daily limit amount in wei." + } + }, + "spendLimitAvailable()": { + "details": "View your available limit" + }, + "spendLimitControllerConfirmationRequired()": { + "details": "Has the spend limit been initialised" + }, + "spendLimitPending()": { + "details": "Is there an active spend limit change" + }, + "spendLimitValue()": { + "details": "View how much has been spent already" + }, + "submitSpendLimitUpdate(uint256)": { + "details": "Submit a daily transfer limit update for non-whitelisted addresses.", + "params": { + "_amount": "is the daily limit amount in wei." + } + }, + "transferOwnership(address,bool)": { + "params": { + "_account": "address to transfer ownership to.", + "_transferable": "indicates whether to keep the ownership transferable." + } + } + }, + "title": "it provides daily spend limit functionality." + }, + "userdoc": { + "methods": { + "isTransferable()": { + "notice": "check if the ownership is transferable." + }, + "owner()": { + "notice": "Find out owner address" + }, + "renounceOwnership()": { + "notice": "Allows the current owner to relinquish control of the contract." + }, + "transferOwnership(address,bool)": { + "notice": "Allows the current owner to transfer control of the contract to a new address." + } + } + } + }, + "settings": { + "compilationTarget": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": "SpendLimit" + }, + "evmVersion": "istanbul", + "libraries": {}, + "optimizer": { + "enabled": true, + "runs": 200 + }, + "remappings": [] + }, + "sources": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/controller.sol": { + "keccak256": "0xb68e6d7092e8e9b3a914aea22172dce9c26dfa9805ba819958b5b8dde7dfd50f", + "urls": [ + "bzz-raw://a1cdba6a1bfc923815b2c1116327c1951ecf40ea8c67ae2456e1c4c50217eb61", + "dweb:/ipfs/QmX4rCEuMEBg6X3cpKdjTtxgNYBrCJyyA51KRR8vbE6sDF" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": { + "keccak256": "0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1", + "urls": [ + "bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf", + "dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ECDSA.sol": { + "keccak256": "0xfc3dde0661847b56e4ff8926be7e4cde9d960cbe18480e01ee648cfbf5d4055a", + "urls": [ + "bzz-raw://d8747b09cbf2ee6d96d21a990fcf326f08084c79fcfad5ed331d64b5705487d9", + "dweb:/ipfs/QmPsy6pKdNtGndw5PMRAXEQ8pVKEMuLvAbgxffZ9cXL4T1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC165.sol": { + "keccak256": "0xaca91baae00478feaafaedff2fc8ebd3d6738c7877ad78d9565ef328f683f4e8", + "urls": [ + "bzz-raw://c55b05166c731d830498a2dd576c6b19ba114e73eb5011dc684f368cb84c5216", + "dweb:/ipfs/QmVyYr64yP1aqFvhBSZeJtzMaPdLyF9w8pytudogFWKtur" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC20.sol": { + "keccak256": "0x54628c1175e0e40ff56df85e92bd9b4e5ee1614600713379ff885bd07f6ef010", + "urls": [ + "bzz-raw://2a0a4531eb59752b7c3315f3c796d2ce2befb0d21eca1908eb94f44873e458de", + "dweb:/ipfs/QmbrqZGUQZaSpYndb9eQ9WVEeboRBHaomma91tpD4ESWeE" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeERC20.sol": { + "keccak256": "0xa654c1247c418db9eb3034e5b795760d2048864625f509a0e81632351e4199c0", + "urls": [ + "bzz-raw://3798f03a8e74dcf0c90072c3f88ccc8be887b9fd9707b063e4c47df0a610478b", + "dweb:/ipfs/QmSaY9ZKzihx5GC3h9XiUmBpQbwhRQw93yasRqxp45cXBJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeMath.sol": { + "keccak256": "0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690", + "urls": [ + "bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610", + "dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENS.sol": { + "keccak256": "0x5d115f126a237cfccc6c687301f87bf3210b7f68594ef780d796caa6e72d6060", + "urls": [ + "bzz-raw://6ca3f8dbd17933dd487c532fcfddc42ec7b46f7ccc84cfcb266cbf8bf453758c", + "dweb:/ipfs/QmcrckQwvrffFdSgrC5txQw5xNruAVtkDQ2aj9V1MtVwKD" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENSBytesUtils.sol": { + "keccak256": "0xe9599418173f34cc89c737059f398ba9a9f5e8a44c67af218bb3373c589f3499", + "urls": [ + "bzz-raw://b20acd1d67c676364e862f4cecdcfc4ade3efc22445fb6fda4a801f6d865bde1", + "dweb:/ipfs/QmW2EP3T1y6kLtfB2rZFhqFBFWzUthvC1DZWzTfVLehPsy" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/PublicResolver.sol": { + "keccak256": "0xdc5767dd5f4c192c3085e89bcc3ab791ab4e3e082f03bfdca1e48f75a0ce72aa", + "urls": [ + "bzz-raw://d4cd247165490f08c6903e99dd86f8a6d279763b0a79660e544a7b8ae0e071dd", + "dweb:/ipfs/QmRyepaRuSLF8QNkV5QSwoTtc6BjX3Kr7KP8GQuCtWp1MH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/RRUtils.sol": { + "keccak256": "0x7be2b14a352eda9d632f2969e8ae00e6e2bf8cb286a0e1d9c3fb2af0b9d2d799", + "urls": [ + "bzz-raw://df3a4d1fb8e19407921d1dfe3a1b8029eb4dd7321f8dc66e16bb97590ce6ff3b", + "dweb:/ipfs/QmV2UTNqJAhiAGBYjUMZYuvvWpj43WC3VpZivmW3LSpfdc" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ResolverBase.sol": { + "keccak256": "0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8", + "urls": [ + "bzz-raw://dc477afd53175b96112bb0e2e25ce85b1f7c0e3fe0da4a2e8539d86712583b00", + "dweb:/ipfs/QmQdwwHEcNMxTWtkrNpkbxtokwiFDdQ5xwPYcuZPRbJQKp" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ABIResolver.sol": { + "keccak256": "0x794514d39c469bab511822ca7a1a7a7838dca338499889896c7dac4303c30c1f", + "urls": [ + "bzz-raw://3668c3ec6be58cf6bbbe2cfcb8e286927fa5ab028d501c8b26d2eeb816ce7303", + "dweb:/ipfs/Qme7RMhhcFxa1xzhJz24s3rdW2VePsPdJhFgQbAiieMjKz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/AddrResolver.sol": { + "keccak256": "0x4d6a95626f02bfc6e5ee75cde2a38e67e9eb9aada78473e05b7003ebd60d8ffb", + "urls": [ + "bzz-raw://45407b2f99a29d0cc3df3636ecc5316414d6eb855860e382dffa57329886d74a", + "dweb:/ipfs/QmaKTuaHdy7ADgPY718fsiwjn2Hd6dqxPtgRcwjNxtdunG" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ContentHashResolver.sol": { + "keccak256": "0xaa3d9b9baae36fbf831b8297832b54ffd1023b9ac508f2c5068b92ce0c30edfc", + "urls": [ + "bzz-raw://a30f83bbf8d55051bdc0b151131e5dca4966fe87f36648f9bf3e580d81d85fa2", + "dweb:/ipfs/QmbWeakvTkEJTRxqFL6wZPDdN6Wqq1tSgCJiu861UbH3yH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/DNSResolver.sol": { + "keccak256": "0x348116b6a303561102f057b89ce14b1bdc5a254c701380cdb1c682adf7e0f749", + "urls": [ + "bzz-raw://8cc58072164c74bf520a061918c422554097134f74854f0b3e1093ba36798f24", + "dweb:/ipfs/QmSsDaHZSjjNZVzbmkxhAKNkjpWMKtMKEVh9cLbskW4NJn" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/InterfaceResolver.sol": { + "keccak256": "0x6398dc59dd38501acd6a716173793e84aa1c454c3e21c190e10ddbe54dd8be41", + "urls": [ + "bzz-raw://7b3af5c29db8d4c13631b3ec427e5dc6dee1a5df0560d36b32deda2451e4bc11", + "dweb:/ipfs/QmXe2sWt31kEELa4VPU84QUUK6UDw6mQANc9gMVezoqioP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/NameResolver.sol": { + "keccak256": "0xcff06da8901397164ca9bea36361ac518fb62cd5283d2e2e835e006980ba4d16", + "urls": [ + "bzz-raw://ab5b2748d4297385b92a83aafdc79fc343842ee71e9537fa9c8cf4d2fbd4aeb0", + "dweb:/ipfs/QmZzZYyiRxZU271QDKhL4F4VdCfx5dZq4fT9Ud786XtiZz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/PubkeyResolver.sol": { + "keccak256": "0xaa10a8a7e1579987b6781657153ae3f16806f240b3ffaa54ea1f303f7cb7a74a", + "urls": [ + "bzz-raw://3ee3cbb2cca361819cea208485c718a3288cf9dc22762bb08c3dc445b60dc862", + "dweb:/ipfs/QmeXyPzZHyPMSHvQPDsCtjdC3rMCTzZNWeYXaWqiDbdmSt" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/TextResolver.sol": { + "keccak256": "0xdfb11cd7e9aef793d88c517195a6d3ac4736aa2aa7f27baafc2541bb2c639774", + "urls": [ + "bzz-raw://84b3d3a186a91c242a729be0da2ad1b705a332472cea0c81d81d4b8e309f3440", + "dweb:/ipfs/QmQTKAyoS6DEUUNVKb5aECk3GBGb7AZNGSV4untv1ZNngi" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/initializable.sol": { + "keccak256": "0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721", + "urls": [ + "bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f", + "dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/strings.sol": { + "keccak256": "0xd7c99d0733e73dc27cba285890b254d36d070807da9e60a573dcc4b5ec3c6f3d", + "urls": [ + "bzz-raw://95845b2178b081aa0ad872f04694fd87f9553d0f78b8e079ce98773dbafc9033", + "dweb:/ipfs/QmPsNebBo51KzdM7ewAPJ5weCL7J5Piy2y1Hgcto2TmvDP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/balanceable.sol": { + "keccak256": "0x5a1c23a4b3afdad849f0639bac47e8c08c1949f0aa531113e06883f9a7ab6662", + "urls": [ + "bzz-raw://a9e6c391948533011c757d89a67cdcc6a741afa7e1c242138c591594d3a3238c", + "dweb:/ipfs/QmfPoN9Dv2AuPBcY1nAdByMAuW1Z7Wj4CnRW3KnRLtiuQM" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/bytesUtils.sol": { + "keccak256": "0x4ea4f266580ca57be6ec7b0d2fe6adb0bf51f978648c3aa65e8d02fe91351522", + "urls": [ + "bzz-raw://b3badb0e0c1dd6b21249852eb2b8fcdd2adffb2aa663926b51241d8eb06d2857", + "dweb:/ipfs/QmRvKPafRARyjdq5duZwx55cxUL4Vi8qvXo5HmQDt5Sq3s" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/controllable.sol": { + "keccak256": "0x8245bddc77a7c5b44dc7f285404193e47b951e9cbba12a765828cb3023f64336", + "urls": [ + "bzz-raw://df426810c455bccd40f5976a2906382e35800fe47e45a1991b4c3684827dd5ad", + "dweb:/ipfs/QmfMrmV9xYTy6NfFnWR4Y29qRzgU8wmiNjkbnYoFUw8YK6" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ensResolvable.sol": { + "keccak256": "0xddb1c7898472491906ebfa73b4c83f8bc946ff3e94e5c8814fe6ea063f3fb665", + "urls": [ + "bzz-raw://7911bc8eb24a89b0eb0e088de4399083af7b2761cce12cd622db715e46994897", + "dweb:/ipfs/QmTz3SyAoGFDopiJuFRES7x155hNFWLF6d9yctJhdNx9m5" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ownable.sol": { + "keccak256": "0x42429c64258acf6e8018aca4fb048760aba8c26e8256d7b7b93be6d542ad8726", + "urls": [ + "bzz-raw://d617ddff648eaffe0b13519b85c1405ed4b57c3a5329d2c950f06485b0f730a3", + "dweb:/ipfs/QmdgX3w1b5psWWEQzRRQ1j2Ej7NNQC1bWxc95YJJFay9f1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/tokenWhitelistable.sol": { + "keccak256": "0x6f0e7922c0be342960f7d3ff610ea3e6e46aa76e1f73f1ff6a529e352532f0a8", + "urls": [ + "bzz-raw://024bf0b3b2df1c5af6cfcd2aa6f281b98b48408b32ac400246a629e539e81ffe", + "dweb:/ipfs/QmNMb6C7a9pzcU7Gu48RBMcV3L3CitpjPiGC3zvNe9wnMj" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/transferrable.sol": { + "keccak256": "0x5f215d0f4f446f068e3948a7b5cf4dd621f4e9c4ba45047b95c4b7ad4c02765d", + "urls": [ + "bzz-raw://cda044581d476790ed11a5f8fb7ccc978e30b8649efa0132f0c701cdf30c2cb0", + "dweb:/ipfs/QmR4oKPAQyfV3wCtsuqT5V2D3BZvsgxV5Wufn5vtAH5ZkJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/licence.sol": { + "keccak256": "0x6adf2a5bc0e6bb1b53ce1a7085b7e10573d8ca6297f5f34e606ccaa4b3079a1c", + "urls": [ + "bzz-raw://d90d7cd882d355a1aec7d88c1bfe8eed85ee30b8ff7f101f7ef1fb4501e700c1", + "dweb:/ipfs/Qmdz8Fzpj9cE8msmcBUEP18KLfrjnvSdFjDf9yxAcCt1KY" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/tokenWhitelist.sol": { + "keccak256": "0x560b9284f40382c95ab64856a7acfd53eb416593053a40cf9f6fe229e08372a0", + "urls": [ + "bzz-raw://e2a217afa376bcb0d901937b52995a33f3ea16dff7e76691b20e761802e4a14b", + "dweb:/ipfs/QmZJhPn8zTtBBE2RQvWLA7FzGLsdbxDcRkMCKiyCw6ypQr" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": { + "keccak256": "0xdb84a948b1cd2f957eb445c541bf7689209c34dbab08ebce9faa0ddfb4aeb47b", + "urls": [ + "bzz-raw://bda80e1f7779ce8582edf170ec8b4d568e1a1f9ab0e171708f39afc0c272e1b3", + "dweb:/ipfs/QmNyeVpgs7ii3bGNbrM1B1yCz1Xs4DwcWKp8DgUm9vz241" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/artifacts/Wallet.json b/contracts/artifacts/Wallet.json new file mode 100644 index 00000000..72db8112 --- /dev/null +++ b/contracts/artifacts/Wallet.json @@ -0,0 +1,1660 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "görli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d39660455534801561007957600080fd5b50615de6806200008a6000396000f3fe6080604052600436106103a25760003560e01c80637fd004fa116101e7578063cc0e7e561161010d578063e61c51ca116100a0578063f41c43191161006f578063f41c431914611114578063f42176481461113e578063f776f518146111b9578063f8b2cb4f146111ce576103a2565b8063e61c51ca1461105d578063eadd3cea14611087578063f36febda146110b1578063f40b51f8146110ea576103a2565b8063d251fefc116100dc578063d251fefc14610ff4578063da84b1ed1461101e578063de212bf314611033578063e2b4ce9714611048576103a2565b8063cc0e7e5614610ef2578063cccdc55614610f07578063cd7958dd14610f1c578063ce0b5bd514610fca576103a2565b8063b221f31611610185578063be40ba7911610154578063be40ba7914610e5b578063beabacc814610e70578063c4856cd914610eb3578063cbd2ac6814610ec8576103a2565b8063b221f31614610da8578063b242e53414610dd2578063b87e21ef14610e0d578063bcb8b74a14610e46576103a2565b806390e690c7116101c157806390e690c714610cb85780639b0dfd2714610ccd578063aaf1fc6214610ce2578063ab20599314610d93576103a2565b80637fd004fa14610c13578063877337b014610c8e5780638da5cb5b14610ca3576103a2565b80633a43199f116102cc5780635d2362a81161026a57806374624c551161023957806374624c5514610b8e578063747c31d614610bb85780637d73b23114610bcd5780637d7d004614610bfe576103a2565b80635d2362a814610a8e5780636137d67014610aa357806369efdfc014610b1e578063715018a614610b79576103a2565b80633f579f42116102a65780633f579f42146108b757806346efe0ed1461097d57806347b55a9d14610a4f5780635adc02ab14610a64576103a2565b80633a43199f146108375780633bfec254146108635780633c672eb71461088d576103a2565b80631efd0299116103445780632587a6a2116103135780632587a6a21461077557806326d05ab21461078a578063294f40251461079f57806332531c3c14610804576103a2565b80631efd02991461065657806320c13b0b1461066b5780632121dc751461073657806321ce918d1461074b576103a2565b8063100f23fd11610380578063100f23fd146104425780631127b57e1461046c5780631626ba7e146104f65780631aa21fba146105cb576103a2565b806301ffc9a7146103a7578063027ef3eb146103ef5780630f3a85d814610416575b600080fd5b3480156103b357600080fd5b506103db600480360360208110156103ca57600080fd5b50356001600160e01b031916611201565b604080519115158252519081900360200190f35b3480156103fb57600080fd5b5061040461121b565b60408051918252519081900360200190f35b34801561042257600080fd5b506104406004803603602081101561043957600080fd5b5035611222565b005b34801561044e57600080fd5b506104406004803603602081101561046557600080fd5b503561132e565b34801561047857600080fd5b506104816114d3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104bb5781810151838201526020016104a3565b50505050905090810190601f1680156104e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561050257600080fd5b506105ae6004803603604081101561051957600080fd5b81359190810190604081016020820135600160201b81111561053a57600080fd5b82018360208201111561054c57600080fd5b803590602001918460018302840111600160201b8311171561056d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506114f4945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105d757600080fd5b50610440600480360360408110156105ee57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561061857600080fd5b82018360208201111561062a57600080fd5b803590602001918460208302840111600160201b8311171561064b57600080fd5b509092509050611569565b34801561066257600080fd5b506104046116ee565b34801561067757600080fd5b506105ae6004803603604081101561068e57600080fd5b810190602081018135600160201b8111156106a857600080fd5b8201836020820111156106ba57600080fd5b803590602001918460018302840111600160201b831117156106db57600080fd5b919390929091602081019035600160201b8111156106f857600080fd5b82018360208201111561070a57600080fd5b803590602001918460018302840111600160201b8311171561072b57600080fd5b5090925090506116ff565b34801561074257600080fd5b506103db6117d4565b34801561075757600080fd5b506104406004803603602081101561076e57600080fd5b50356117e4565b34801561078157600080fd5b50610404611882565b34801561079657600080fd5b506103db611888565b3480156107ab57600080fd5b506107b4611891565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107f05781810151838201526020016107d8565b505050509050019250505060405180910390f35b34801561081057600080fd5b506103db6004803603602081101561082757600080fd5b50356001600160a01b03166118f3565b6104406004803603604081101561084d57600080fd5b506001600160a01b038135169060200135611908565b34801561086f57600080fd5b506104406004803603602081101561088657600080fd5b5035611b46565b34801561089957600080fd5b50610440600480360360208110156108b057600080fd5b5035611c3e565b3480156108c357600080fd5b50610481600480360360608110156108da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561090957600080fd5b82018360208201111561091b57600080fd5b803590602001918460018302840111600160201b8311171561093c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611ce4945050505050565b34801561098957600080fd5b50610440600480360360608110156109a057600080fd5b81359190810190604081016020820135600160201b8111156109c157600080fd5b8201836020820111156109d357600080fd5b803590602001918460018302840111600160201b831117156109f457600080fd5b919390929091602081019035600160201b811115610a1157600080fd5b820183602082011115610a2357600080fd5b803590602001918460018302840111600160201b83111715610a4457600080fd5b5090925090506121db565b348015610a5b57600080fd5b506107b461251c565b348015610a7057600080fd5b5061044060048036036020811015610a8757600080fd5b503561257c565b348015610a9a57600080fd5b5061040461284c565b348015610aaf57600080fd5b5061044060048036036020811015610ac657600080fd5b810190602081018135600160201b811115610ae057600080fd5b820183602082011115610af257600080fd5b803590602001918460208302840111600160201b83111715610b1357600080fd5b509092509050612858565b348015610b2a57600080fd5b50610440600480360360e0811015610b4157600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c00135612a7e565b348015610b8557600080fd5b50610440612b62565b348015610b9a57600080fd5b5061044060048036036020811015610bb157600080fd5b5035612c60565b348015610bc457600080fd5b50610404612d64565b348015610bd957600080fd5b50610be2612d6a565b604080516001600160a01b039092168252519081900360200190f35b348015610c0a57600080fd5b50610404612d79565b348015610c1f57600080fd5b5061044060048036036020811015610c3657600080fd5b810190602081018135600160201b811115610c5057600080fd5b820183602082011115610c6257600080fd5b803590602001918460208302840111600160201b83111715610c8357600080fd5b509092509050612d85565b348015610c9a57600080fd5b506104046130c7565b348015610caf57600080fd5b50610be26130cd565b348015610cc457600080fd5b506104406130dc565b348015610cd957600080fd5b50610404613139565b348015610cee57600080fd5b5061044060048036036020811015610d0557600080fd5b810190602081018135600160201b811115610d1f57600080fd5b820183602082011115610d3157600080fd5b803590602001918460018302840111600160201b83111715610d5257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061313f945050505050565b348015610d9f57600080fd5b506103db613272565b348015610db457600080fd5b5061044060048036036020811015610dcb57600080fd5b503561327b565b348015610dde57600080fd5b5061044060048036036040811015610df557600080fd5b506001600160a01b038135169060200135151561336b565b348015610e1957600080fd5b5061040460048036036040811015610e3057600080fd5b506001600160a01b038135169060200135613525565b348015610e5257600080fd5b506103db6135b5565b348015610e6757600080fd5b506103db6135be565b348015610e7c57600080fd5b5061044060048036036060811015610e9357600080fd5b506001600160a01b038135811691602081013590911690604001356135cd565b348015610ebf57600080fd5b50610404613757565b348015610ed457600080fd5b5061044060048036036020811015610eeb57600080fd5b503561375d565b348015610efe57600080fd5b50610404613ada565b348015610f1357600080fd5b50610404613ae0565b348015610f2857600080fd5b5061040460048036036020811015610f3f57600080fd5b810190602081018135600160201b811115610f5957600080fd5b820183602082011115610f6b57600080fd5b803590602001918460208302840111600160201b83111715610f8c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613ae6945050505050565b348015610fd657600080fd5b5061044060048036036020811015610fed57600080fd5b5035613b40565b34801561100057600080fd5b50610be26004803603602081101561101757600080fd5b5035613ce9565b34801561102a57600080fd5b50610404613d10565b34801561103f57600080fd5b506103db613d16565b34801561105457600080fd5b50610404613d24565b34801561106957600080fd5b506104406004803603602081101561108057600080fd5b5035613d2a565b34801561109357600080fd5b50610440600480360360208110156110aa57600080fd5b5035613e74565b3480156110bd57600080fd5b50610404600480360360408110156110d457600080fd5b506001600160a01b038135169060200135613ecd565b3480156110f657600080fd5b506104406004803603602081101561110d57600080fd5b5035614080565b34801561112057600080fd5b506104406004803603602081101561113757600080fd5b50356140d9565b34801561114a57600080fd5b506104406004803603602081101561116157600080fd5b810190602081018135600160201b81111561117b57600080fd5b82018360208201111561118d57600080fd5b803590602001918460208302840111600160201b831117156111ae57600080fd5b509092509050614132565b3480156111c557600080fd5b506103db614484565b3480156111da57600080fd5b50610404600480360360208110156111f157600080fd5b50356001600160a01b031661448d565b6001600160e01b031981166301ffc9a760e01b145b919050565b603e545b90565b61122b33614498565b8061123557503330145b611279576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561129857506706f05b59d3b200008111155b6112df576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b6112f060408263ffffffff6144ac16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b61133733614498565b80611346575061134633614515565b611390576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a5460ff166113df576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611442603880548060200260200160405190810160405280929190818152602001828054801561143857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161141a575b5050505050613ae6565b811461147f5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b61148b60386000615b9b565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b600080611507848463ffffffff6145a916565b905061151281614498565b611557576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61157233614498565b8061157c57503330145b6115c0576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b80611609576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b8181101561166b57600061163a84848481811061162557fe5b905060200201356001600160a01b0316614697565b90506116628585858581811061164c57fe5b905060200201356001600160a01b0316836135cd565b5060010161160c565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60006116fa6047614728565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061177694508693508991508890819084018382808284376000920191909152506114f492505050565b6001600160e01b031916146117c2576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b603554600160a01b900460ff1690565b6117ed33614498565b806117f757503330145b61183b576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b61184c603b8263ffffffff61475d16565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60405490565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156118e957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118cb575b5050505050905090565b60366020526000908152604090205460ff1681565b61191133614498565b8061191b57503330145b61195f576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611968826147be565b6119ae576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006119ba8383613ecd565b90506119cd60478263ffffffff6147d816565b60006119da604d5461484e565b90506001600160a01b03841615611a8257611a056001600160a01b038516828563ffffffff61496f16565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611a6557600080fd5b505af1158015611a79573d6000803e3d6000fd5b50505050611afc565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611ae257600080fd5b505af1158015611af6573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611b4f33614498565b80611b5957503330145b611b9d576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b604654811115611bef576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611c0060478263ffffffff6144ac16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611c4733614498565b80611c5157503330145b611c95576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611ca6603b8263ffffffff6144ac16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611cef33614498565b80611cf957503330145b611d3d576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16611d6e57611d6e603b8463ffffffff6147d816565b611d80846001600160a01b0316614a87565b8015611d905750611d9084614a8d565b15611f7757600080611da28685614aa7565b6001600160a01b038216600090815260366020526040902054919350915060ff16611de8576000611dd38783613525565b9050611de6603b8263ffffffff6147d816565b505b611e016001600160a01b0387168563ffffffff614bb116565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611e3457fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ecf578181015183820152602001611eb7565b50505050905090810190601f168015611efc5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611f2f578181015183820152602001611f17565b50505050905090810190601f168015611f5c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506121d4915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611fb65780518252601f199092019160209182019101611f97565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612018576040519150601f19603f3d011682016040523d82523d6000602084013e61201d565b606091505b50915091508181906120ad5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561207257818101518382015260200161205a565b50505050905090810190601f16801561209f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561213257818101518382015260200161211a565b50505050905090810190601f16801561215f5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561219257818101518382015260200161217a565b50505050905090810190601f1680156121bf5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6121e433614515565b612223576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b600046905060006122a3823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614d6f565b9050631626ba7e60e01b6001600160e01b0319166122f78286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114f492505050565b6001600160e01b03191614612343576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b604c548714612385576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b61238d614dc0565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d80600081146123ed576040519150601f19603f3d011682016040523d82523d6000602084013e6123f2565b606091505b50915091508181906124455760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561207257818101518382015260200161205a565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b838110156124d45781810151838201526020016124bc565b50505050905090810190601f1680156125015780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156118e9576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118cb575050505050905090565b61258533614515565b6125c4576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b603a5460ff16612613576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6126746038805480602002602001604051908101604052809291908181526020018280548015611438576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161141a575050505050613ae6565b81146126b15760405162461bcd60e51b8152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b60005b6038548110156127985760366000603883815481106126cf57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612790576001603660006038848154811061270e57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560388054603791908390811061275457fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b6001016126b4565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561282457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612806575b5050935050505060405180910390a161283f60386000615b9b565b50603a805460ff19169055565b60006116fa603b614728565b61286133614498565b8061286b57503330145b6128af576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff161580156128ca5750603a54610100900460ff16155b61291b576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff16612974576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806129b8576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6129c460398383615bb9565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d19285928592612a3392859185918291850190849080828437600092019190915250613ae692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff1680612a975750612a97614e08565b80612aa5575060005460ff16155b612ae05760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015612b0b576000805460ff1961ff0019909116610100171660011790555b612b1486614e0e565b612b1d84614edc565b612b278888614f89565b612b30826150e8565b612b386151d3565b612b41856152c4565b604d8390558015612b58576000805461ff00191690555b5050505050505050565b612b6b33614498565b612bb5576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612c13576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612c6933614498565b80612c7357503330145b612cb7576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612cd657506706f05b59d3b200008111155b612d1d576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612d2e60408263ffffffff61475d16565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b604d5490565b6033546001600160a01b031690565b60006116fa6040614728565b612d8e33614498565b80612d9857503330145b612ddc576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff16158015612df75750603a54610100900460ff16155b612e48576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612f6457612ea1828281518110612e9457fe5b6020026020010151614498565b15612eec576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612f0357fe5b60200260200101516001600160a01b03161415612f5c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612e7c565b50603a5462010000900460ff16612fbe576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81613002576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61300e60388484615bb9565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261307b92859185918291850190849080828437600092019190915250613ae692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60455490565b6035546001600160a01b031690565b6130e533614498565b61312f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b613137614dc0565b565b603b5490565b61314833614498565b8061315257503330145b613196576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b86851015612b58576131bf86605463ffffffff61541616565b888601805160148201516034909201805193995060609190911c9650909450909250905061320460546131f8878563ffffffff61547316565b9063ffffffff61547316565b94508685111561324b576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161326157506040805160208101909152600081525b61326c848483611ce4565b506131a6565b604b5460ff1690565b61328433614498565b8061328e57503330145b6132d2576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b604654811115613324576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b61333560478263ffffffff61475d16565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61337433614498565b6133be576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff1661341c576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166134615760405162461bcd60e51b8152600401808060200182810382526023815260200180615d0c6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b83151502179055806134ba57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080613534866154cd565b5050509350935093505080156135a9578161357f576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b61359f83613593878563ffffffff61565f16565b9063ffffffff6156b816565b9350505050611563565b50600095945050505050565b603f5460ff1690565b603a5462010000900460ff1681565b6135d633614498565b806135e057503330145b613624576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8080613661576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b0384166136ac576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff166136fc57816001600160a01b038416156136e9576136e68484613525565b90505b6136fa603b8263ffffffff6147d816565b505b613707848484615722565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b604a5490565b61376633614515565b6137a5576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b603a54610100900460ff166137f9576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61385a6039805480602002602001604051908101604052809291908181526020018280548015611438576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161141a575050505050613ae6565b81146138975760405162461bcd60e51b8152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b60005b603954811015613a255760366000603983815481106138b557fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615613a1d57600060366000603984815481106138f557fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b60375461393f90600163ffffffff61541616565b811015613a07576039828154811061395357fe5b600091825260209091200154603780546001600160a01b03909216918390811061397957fe5b6000918252602090912001546001600160a01b031614156139ff576037805460001981019081106139a657fe5b600091825260209091200154603780546001600160a01b0390921691839081106139cc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613a07565b60010161392b565b506037805490613a1b906000198301615c1c565b505b60010161389a565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b03166001600160a01b03168152602001806020018281038252838181548152602001915080548015613ab157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613a93575b5050935050505060405180910390a1613acc60396000615b9b565b50603a805461ff0019169055565b60435490565b604c5481565b60008160405160200180828051906020019060200280838360005b83811015613b19578181015183820152602001613b01565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613b4933614498565b80613b585750613b5833614515565b613ba2576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a54610100900460ff16613bf6576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613c576039805480602002602001604051908101604052809291908181526020018280548015611438576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161141a575050505050613ae6565b8114613c945760405162461bcd60e51b8152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b613ca060396000615b9b565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60378181548110613cf657fe5b6000918252602090912001546001600160a01b0316905081565b60475490565b603a54610100900460ff1681565b60345490565b8080613d67576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613d7033614498565b80613d7f5750613d7f33614515565b613dc9576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613dda60408363ffffffff6147d816565b613de26130cd565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613e1a573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613e456130cd565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613e7d33614515565b613ebc576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b611ca6603b8263ffffffff6157ec16565b6000613ed761583c565b6001600160a01b0316836001600160a01b03161415613ef7575080611563565b816001600160a01b03841615613fbc576000806000613f15876154cd565b5050509350935093505080613f67576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613fa2576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613fb683613593888563ffffffff61565f16565b93505050505b6000806000613fc96158b2565b505050935093509350508061401b576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81614061576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b61407582613593868663ffffffff61565f16565b979650505050505050565b61408933614515565b6140c8576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b611c0060478263ffffffff6157ec16565b6140e233614515565b614121576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b6112f060408263ffffffff6157ec16565b61413b33614498565b8061414557503330145b614189576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015614298576141d5828281518110612e9457fe5b15614220576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061423757fe5b60200260200101516001600160a01b03161415614290576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b6001016141bd565b50603a5462010000900460ff16156142ef576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b828110156143e0576036600085858481811061430a57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff166143d85760016036600086868581811061434657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550603784848381811061439b57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016142f2565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561447057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614452575b5050935050505060405180910390a1505050565b60445460ff1690565b600061156382614697565b6035546001600160a01b0390811691161490565b600482015460ff16156144fa576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6145048282615a21565b50600401805460ff19166001179055565b600061452260345461484e565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561457757600080fd5b505afa15801561458b573d6000803e3d6000fd5b505050506040513d60208110156145a157600080fd5b505192915050565b600081516041146145bc57506000611563565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156146025760009350505050611563565b8060ff16601b1415801561461a57508060ff16601c14155b1561462b5760009350505050611563565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614682573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b0382161561472157604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156146ee57600080fd5b505afa158015614702573d6000803e3d6000fd5b505050506040513d602081101561471857600080fd5b50519050611216565b5047611216565b6002810154600090614743906201518063ffffffff61547316565b42111561475257508054611216565b506001810154611216565b600482015460ff166147b6576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b6000806147ca836154cd565b509098975050505050505050565b6147e182615a44565b808260010154101561482d576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b6001820154614842908263ffffffff61541616565b82600101819055505050565b6033546000906001600160a01b03166148ae576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156148fa57600080fd5b505afa15801561490e573d6000803e3d6000fd5b505050506040513d602081101561492457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561457757600080fd5b8015806149f5575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156149c757600080fd5b505afa1580156149db573d6000803e3d6000fd5b505050506040513d60208110156149f157600080fd5b5051155b614a305760405162461bcd60e51b8152600401808060200182810382526036815260200180615d7c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614a82908490614bb1565b505050565b3b151590565b600080614a99836154cd565b509198975050505050505050565b600080614ab560455461484e565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614b29578181015183820152602001614b11565b50505050905090810190601f168015614b565780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b158015614b7357600080fd5b505afa158015614b87573d6000803e3d6000fd5b505050506040513d6040811015614b9d57600080fd5b508051602090910151909590945092505050565b614bc3826001600160a01b0316614a87565b614c14576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614c525780518252601f199092019160209182019101614c33565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614cb4576040519150601f19603f3d011682016040523d82523d6000602084013e614cb9565b606091505b509150915081614d10576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614d6957808060200190516020811015614d2c57600080fd5b5051614d695760405162461bcd60e51b815260040180806020018281038252602a815260200180615d2f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604c80546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b303b1590565b600054610100900460ff1680614e275750614e27614e08565b80614e35575060005460ff16155b614e705760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015614e9b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615614ec657603380546001600160a01b0319166001600160a01b0384161790555b8015614ed8576000805461ff00191690555b5050565b600054610100900460ff1680614ef55750614ef5614e08565b80614f03575060005460ff16155b614f3e5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015614f69576000805460ff1961ff0019909116610100171660011790555b8115614ec65760348290558015614ed8576000805461ff00191690555050565b600054610100900460ff1680614fa25750614fa2614e08565b80614fb0575060005460ff16155b614feb5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615016576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff91041661508e57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015614a82576000805461ff0019169055505050565b600054610100900460ff16806151015750615101614e08565b8061510f575060005460ff16155b61514a5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615175576000805460ff1961ff0019909116610100171660011790555b6040805160a08101825283815260208101849052429181018290526000606082018190526080909101819052603b849055603c849055603d91909155603e55603f805460ff191690558015614ed8576000805461ff00191690555050565b600054610100900460ff16806151ec57506151ec614e08565b806151fa575060005460ff16155b6152355760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615260576000805460ff1961ff0019909116610100171660011790555b6040805160a0810182526706f05b59d3b2000080825260208201819052428284018190526000606084018190526080909301839052928190556041556042919091556043556044805460ff1916905580156152c1576000805461ff00191690555b50565b600054610100900460ff16806152dd57506152dd614e08565b806152eb575060005460ff16155b6153265760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615351576000805460ff1961ff0019909116610100171660011790555b61535a82615a9c565b60006153646158b2565b5050505050915050600081116153b1576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260468190556040805160a081018252828152602081018390524291810182905260006060820181905260809091018190526047839055604892909255604955604a55604b805460ff191690558015614ed8576000805461ff00191690555050565b60008282111561546d576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156121d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60606000806000806000806154e360455461484e565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561553857600080fd5b505afa15801561554c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561557557600080fd5b8101908080516040519392919084600160201b82111561559457600080fd5b9083019060208201858111156155a957600080fd5b8251600160201b8111828201881017156155c257600080fd5b82525081516020918201929091019080838360005b838110156155ef5781810151838201526020016155d7565b50505050905090810190601f16801561561c5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261566e57506000611563565b8282028284828161567b57fe5b04146121d45760405162461bcd60e51b8152600401808060200182810382526021815260200180615cbd6021913960400191505060405180910390fd5b600080821161570e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161571957fe5b04949350505050565b6001600160a01b0382166157d2576040516000906001600160a01b0385169083908381818185875af1925050503d806000811461577b576040519150601f19603f3d011682016040523d82523d6000602084013e615780565b606091505b50509050806157cc576040805162461bcd60e51b81526020600482015260136024820152721cd85999551c985b9cd9995c8819985a5b1959606a1b604482015290519081900360640190fd5b50614a82565b614a826001600160a01b038316848363ffffffff615b4916565b8082600301541461582e5760405162461bcd60e51b8152600401808060200182810382526022815260200180615c7b6022913960400191505060405180910390fd5b614ed8828360030154615a21565b600061584960455461484e565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561588157600080fd5b505afa158015615895573d6000803e3d6000fd5b505050506040513d60208110156158ab57600080fd5b5051905090565b60606000806000806000806158c860455461484e565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561590057600080fd5b505afa158015615914573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561593d57600080fd5b8101908080516040519392919084600160201b82111561595c57600080fd5b90830190602082018581111561597157600080fd5b8251600160201b81118282018810171561598a57600080fd5b82525081516020918201929091019080838360005b838110156159b757818101518382015260200161599f565b50505050905090810190601f1680156159e45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b615a2a82615a44565b8082556001820154811015614ed857815460018301555050565b6002810154615a5c906201518063ffffffff61547316565b4211156152c157426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a150565b600054610100900460ff1680615ab55750615ab5614e08565b80615ac3575060005460ff16155b615afe5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615b29576000805460ff1961ff0019909116610100171660011790555b8115614ec65760458290558015614ed8576000805461ff00191690555050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052614a82908490614bb1565b50805460008255906000526020600020908101906152c19190615c3c565b828054828255906000526020600020908101928215615c0c579160200282015b82811115615c0c5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615bd9565b50615c18929150615c56565b5090565b815481835581811115614a8257600083815260209020614a829181019083015b61121f91905b80821115615c185760008155600101615c42565b61121f91905b80821115615c185780546001600160a01b0319168155600101615c5c56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65646f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158200650f450c2d8f8fc75477f70e683f64b5cc64733a3582ce80a54555fd95dd90364736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH15 0xC2E074EC69A0DFB2997BA6C7D2E1E OR SWAP1 SSTORE PUSH32 0x7F2CE995617D2816B426C5C8698C5EC2952F7A34BB10F38326F74933D5893697 PUSH1 0x34 SSTORE PUSH32 0xE84F90570F13FE09F288F2411FF9CF50DA611ED0C7DB7F73D48053FFC974D396 PUSH1 0x45 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5DE6 DUP1 PUSH3 0x8A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3A2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7FD004FA GT PUSH2 0x1E7 JUMPI DUP1 PUSH4 0xCC0E7E56 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xE61C51CA GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF41C4319 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF41C4319 EQ PUSH2 0x1114 JUMPI DUP1 PUSH4 0xF4217648 EQ PUSH2 0x113E JUMPI DUP1 PUSH4 0xF776F518 EQ PUSH2 0x11B9 JUMPI DUP1 PUSH4 0xF8B2CB4F EQ PUSH2 0x11CE JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xE61C51CA EQ PUSH2 0x105D JUMPI DUP1 PUSH4 0xEADD3CEA EQ PUSH2 0x1087 JUMPI DUP1 PUSH4 0xF36FEBDA EQ PUSH2 0x10B1 JUMPI DUP1 PUSH4 0xF40B51F8 EQ PUSH2 0x10EA JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xD251FEFC GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0xFF4 JUMPI DUP1 PUSH4 0xDA84B1ED EQ PUSH2 0x101E JUMPI DUP1 PUSH4 0xDE212BF3 EQ PUSH2 0x1033 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x1048 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xCC0E7E56 EQ PUSH2 0xEF2 JUMPI DUP1 PUSH4 0xCCCDC556 EQ PUSH2 0xF07 JUMPI DUP1 PUSH4 0xCD7958DD EQ PUSH2 0xF1C JUMPI DUP1 PUSH4 0xCE0B5BD5 EQ PUSH2 0xFCA JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xB221F316 GT PUSH2 0x185 JUMPI DUP1 PUSH4 0xBE40BA79 GT PUSH2 0x154 JUMPI DUP1 PUSH4 0xBE40BA79 EQ PUSH2 0xE5B JUMPI DUP1 PUSH4 0xBEABACC8 EQ PUSH2 0xE70 JUMPI DUP1 PUSH4 0xC4856CD9 EQ PUSH2 0xEB3 JUMPI DUP1 PUSH4 0xCBD2AC68 EQ PUSH2 0xEC8 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xB221F316 EQ PUSH2 0xDA8 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0xDD2 JUMPI DUP1 PUSH4 0xB87E21EF EQ PUSH2 0xE0D JUMPI DUP1 PUSH4 0xBCB8B74A EQ PUSH2 0xE46 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x90E690C7 GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x90E690C7 EQ PUSH2 0xCB8 JUMPI DUP1 PUSH4 0x9B0DFD27 EQ PUSH2 0xCCD JUMPI DUP1 PUSH4 0xAAF1FC62 EQ PUSH2 0xCE2 JUMPI DUP1 PUSH4 0xAB205993 EQ PUSH2 0xD93 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x7FD004FA EQ PUSH2 0xC13 JUMPI DUP1 PUSH4 0x877337B0 EQ PUSH2 0xC8E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCA3 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x3A43199F GT PUSH2 0x2CC JUMPI DUP1 PUSH4 0x5D2362A8 GT PUSH2 0x26A JUMPI DUP1 PUSH4 0x74624C55 GT PUSH2 0x239 JUMPI DUP1 PUSH4 0x74624C55 EQ PUSH2 0xB8E JUMPI DUP1 PUSH4 0x747C31D6 EQ PUSH2 0xBB8 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0xBCD JUMPI DUP1 PUSH4 0x7D7D0046 EQ PUSH2 0xBFE JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x5D2362A8 EQ PUSH2 0xA8E JUMPI DUP1 PUSH4 0x6137D670 EQ PUSH2 0xAA3 JUMPI DUP1 PUSH4 0x69EFDFC0 EQ PUSH2 0xB1E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xB79 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x3F579F42 GT PUSH2 0x2A6 JUMPI DUP1 PUSH4 0x3F579F42 EQ PUSH2 0x8B7 JUMPI DUP1 PUSH4 0x46EFE0ED EQ PUSH2 0x97D JUMPI DUP1 PUSH4 0x47B55A9D EQ PUSH2 0xA4F JUMPI DUP1 PUSH4 0x5ADC02AB EQ PUSH2 0xA64 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x3A43199F EQ PUSH2 0x837 JUMPI DUP1 PUSH4 0x3BFEC254 EQ PUSH2 0x863 JUMPI DUP1 PUSH4 0x3C672EB7 EQ PUSH2 0x88D JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x1EFD0299 GT PUSH2 0x344 JUMPI DUP1 PUSH4 0x2587A6A2 GT PUSH2 0x313 JUMPI DUP1 PUSH4 0x2587A6A2 EQ PUSH2 0x775 JUMPI DUP1 PUSH4 0x26D05AB2 EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0x294F4025 EQ PUSH2 0x79F JUMPI DUP1 PUSH4 0x32531C3C EQ PUSH2 0x804 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x1EFD0299 EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0x20C13B0B EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0x21CE918D EQ PUSH2 0x74B JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x100F23FD GT PUSH2 0x380 JUMPI DUP1 PUSH4 0x100F23FD EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x1127B57E EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x4F6 JUMPI DUP1 PUSH4 0x1AA21FBA EQ PUSH2 0x5CB JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x27EF3EB EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0xF3A85D8 EQ PUSH2 0x416 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x1201 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x121B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1222 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x132E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x481 PUSH2 0x14D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4E8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x56D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x14F4 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1569 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x16EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x72B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x16FF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x17D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x1882 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x1888 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7B4 PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18F3 JUMP JUMPDEST PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x84D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1908 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x899 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x481 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1CE4 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x9F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xA44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x21DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7B4 PUSH2 0x251C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x257C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x284C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xAE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2858 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x2A7E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH2 0x2B62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2C60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x2D64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBE2 PUSH2 0x2D6A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x2D79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2D85 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x30C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBE2 PUSH2 0x30CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH2 0x30DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xD1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x313F SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x3272 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x327B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x336B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3525 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x35B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x35BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x35CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3757 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x375D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3ADA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3AE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xF59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3AE6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1000 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3CE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x103F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x3D16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1054 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3D24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1069 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1080 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3D2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1093 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3E74 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x10D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3ECD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4080 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x40D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x114A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x117B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x118D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x11AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4132 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x4484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x448D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3E SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x122B CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1235 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x1279 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH7 0x38D7EA4C68000 GT ISZERO DUP1 ISZERO PUSH2 0x1298 JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 GT ISZERO JUMPDEST PUSH2 0x12DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x6F7574206F662072616E676520746F702D757 PUSH1 0x6C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x12F0 PUSH1 0x40 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x44AC AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x41FF5D5CE3B7935893A4E7269EC5CAAE9CCA5E3BF0EB4B21D2F443489667112E SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1337 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1346 JUMPI POP PUSH2 0x1346 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x1390 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND PUSH2 0x13DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1442 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1438 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x141A JUMPI JUMPDEST POP POP POP POP POP PUSH2 0x3AE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x147F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D59 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x148B PUSH1 0x38 PUSH1 0x0 PUSH2 0x5B9B JUMP JUMPDEST PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7794EFF834D760583543E6E510E717A5E66D2C064E225F4DB448343C3E66AFCF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x332E342E31 PUSH1 0xD8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1507 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x45A9 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1512 DUP2 PUSH2 0x4498 JUMP JUMPDEST PUSH2 0x1557 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x696E76616C6964207369676E6174757265 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1572 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x157C JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x15C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1609 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x617373657420617272617920697320656D707479 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x166B JUMPI PUSH1 0x0 PUSH2 0x163A DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0x1625 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4697 JUMP JUMPDEST SWAP1 POP PUSH2 0x1662 DUP6 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x164C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x35CD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x160C JUMP JUMPDEST POP PUSH32 0xD4F62F23021706247DCFFEA245D104AE7DDAEC7F23ACF3D11D7136D5DE6A69AD DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FA PUSH1 0x47 PUSH2 0x4728 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP4 ADD DUP2 DUP2 SUB PUSH1 0x1F NOT ADD DUP3 MSTORE DUP1 DUP5 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x1F DUP12 ADD DUP4 SWAP1 DIV DUP4 MUL DUP3 ADD DUP4 ADD SWAP1 SWAP5 MSTORE DUP10 DUP2 MSTORE SWAP3 SWAP7 POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP6 POP PUSH2 0x1776 SWAP5 POP DUP7 SWAP4 POP DUP10 SWAP2 POP DUP9 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x14F4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x17C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1CDA59C81B9BDD081D985B1A59 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH4 0x20C13B0B PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x17ED CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x17F7 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x183B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x184C PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x475D AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x4B1B970C8A0FA761E7803ED70C13D7ACA71904B13DF60FBE03F981DA1730DA91 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x18CB JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1911 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x191B JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x195F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1968 DUP3 PUSH2 0x47BE JUMP JUMPDEST PUSH2 0x19AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x746F6B656E206E6F74206C6F616461626C65 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19BA DUP4 DUP4 PUSH2 0x3ECD JUMP JUMPDEST SWAP1 POP PUSH2 0x19CD PUSH1 0x47 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19DA PUSH1 0x4D SLOAD PUSH2 0x484E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x1A82 JUMPI PUSH2 0x1A05 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x496F AND JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1B3C96B4 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A79 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1AFC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1B3C96B4 DUP5 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x5F65674BEC9AF81F71BE68674135A0EA3F163FB91984E3893D06DA9F6EA2CE8A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x1B4F CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1B59 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x1B9D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x46 SLOAD DUP2 GT ISZERO PUSH2 0x1BEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x1BDD5D081BD9881C985B99D9481B1BD85908185B5BDD5B9D PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1C00 PUSH1 0x47 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x44AC AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xB05243483E17C3F3377AEE82B7D47E5700B48288695FC08B7ECC2759AFA44EF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1C47 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1C51 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x1C95 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1CA6 PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x44AC AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x68F112E5EC923D412BE64779FE69E0FCBB6784C6617E94CCCC8FD348F2E0F21 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1CEF CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1CF9 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1D6E JUMPI PUSH2 0x1D6E PUSH1 0x3B DUP5 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST PUSH2 0x1D80 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4A87 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D90 JUMPI POP PUSH2 0x1D90 DUP5 PUSH2 0x4A8D JUMP JUMPDEST ISZERO PUSH2 0x1F77 JUMPI PUSH1 0x0 DUP1 PUSH2 0x1DA2 DUP7 DUP6 PUSH2 0x4AA7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0xFF AND PUSH2 0x1DE8 JUMPI PUSH1 0x0 PUSH2 0x1DD3 DUP8 DUP4 PUSH2 0x3525 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DE6 PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST POP JUMPDEST PUSH2 0x1E01 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP6 PUSH4 0xFFFFFFFF PUSH2 0x4BB1 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x1 PUSH1 0xF8 SHL DUP2 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0x1E34 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0xF77753FAB406ECFFF96D6FF2476C64A838FA9F6D37B1BF190F8546E395E3B613 DUP8 DUP8 DUP8 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1ECF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EB7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1EFC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F2F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1F17 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F5C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 POP PUSH2 0x21D4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1FB6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1F97 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2018 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x201D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP2 SWAP1 PUSH2 0x20AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2072 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x205A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x209F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH32 0xF77753FAB406ECFFF96D6FF2476C64A838FA9F6D37B1BF190F8546E395E3B613 DUP7 DUP7 DUP7 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2132 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x211A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x215F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2192 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x217A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x21BF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x21E4 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x2223 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH1 0x0 PUSH2 0x22A3 DUP3 ADDRESS DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH9 0x36B7B737B634BA341D PUSH1 0xB9 SHL DUP2 MSTORE POP PUSH1 0x9 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x4D6F JUMP JUMPDEST SWAP1 POP PUSH4 0x1626BA7E PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x22F7 DUP3 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x14F4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2343 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1CDA59C81B9BDD081D985B1A59 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4C SLOAD DUP8 EQ PUSH2 0x2385 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x7478207265706C6179 PUSH1 0xB8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x238D PUSH2 0x4DC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP4 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23ED JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x23F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP2 SWAP1 PUSH2 0x2445 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2072 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x205A JUMP JUMPDEST POP PUSH32 0x823DBCF2B7B0F265871963CA65AC033F6B4C71E0D82CD123D2FF23D752DC21C1 DUP9 DUP9 DUP4 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP7 MLOAD DUP2 MSTORE DUP7 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP4 SWAP2 DUP9 ADD SWAP3 POP SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x24BC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2501 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x18CB JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2585 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x25C4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND PUSH2 0x2613 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2674 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1438 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x141A JUMPI POP POP POP POP POP PUSH2 0x3AE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x26B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D59 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x38 SLOAD DUP2 LT ISZERO PUSH2 0x2798 JUMPI PUSH1 0x36 PUSH1 0x0 PUSH1 0x38 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x26CF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2790 JUMPI PUSH1 0x1 PUSH1 0x36 PUSH1 0x0 PUSH1 0x38 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x270E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x38 DUP1 SLOAD PUSH1 0x37 SWAP2 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x2754 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP4 SLOAD PUSH1 0x1 DUP2 ADD DUP6 SSTORE SWAP4 DUP4 MSTORE SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x26B4 JUMP JUMPDEST POP PUSH32 0xB2F6CCCEE7A369E23E293C25AA19BEF80AF11EB26DEBA3EA0F2A02783F752E4A CALLER PUSH1 0x38 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x2824 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2806 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x283F PUSH1 0x38 PUSH1 0x0 PUSH2 0x5B9B JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FA PUSH1 0x3B PUSH2 0x4728 JUMP JUMPDEST PUSH2 0x2861 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x286B JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x28AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x28CA JUMPI POP PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x291B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x77686974656C6973742073756D62697373696F6E2070656E64696E6700000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2974 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x1DDA1A5D195B1A5CDD081B9BDD081A5B9A5D1A585B1A5E9959 PUSH1 0x3A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x29B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x195B5C1D1E481DDA1A5D195B1A5CDD PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x29C4 PUSH1 0x39 DUP4 DUP4 PUSH2 0x5BB9 JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP5 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP4 DUP3 MSTORE PUSH32 0xFBC0E5CA6C7E4858DAF0FDB185EF5186203E74EC9C64737E93C0AEAEC596E1D1 SWAP3 DUP6 SWAP3 DUP6 SWAP3 PUSH2 0x2A33 SWAP3 DUP6 SWAP2 DUP6 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3AE6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x2A97 JUMPI POP PUSH2 0x2A97 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x2AA5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x2AE0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x2B0B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH2 0x2B14 DUP7 PUSH2 0x4E0E JUMP JUMPDEST PUSH2 0x2B1D DUP5 PUSH2 0x4EDC JUMP JUMPDEST PUSH2 0x2B27 DUP9 DUP9 PUSH2 0x4F89 JUMP JUMPDEST PUSH2 0x2B30 DUP3 PUSH2 0x50E8 JUMP JUMPDEST PUSH2 0x2B38 PUSH2 0x51D3 JUMP JUMPDEST PUSH2 0x2B41 DUP6 PUSH2 0x52C4 JUMP JUMPDEST PUSH1 0x4D DUP4 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2B58 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2B6B CALLER PUSH2 0x4498 JUMP JUMPDEST PUSH2 0x2BB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2C13 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x2C69 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x2C73 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x2CB7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH7 0x38D7EA4C68000 GT ISZERO DUP1 ISZERO PUSH2 0x2CD6 JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 GT ISZERO JUMPDEST PUSH2 0x2D1D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x6F7574206F662072616E676520746F702D757 PUSH1 0x6C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2D2E PUSH1 0x40 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x475D AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xAF2A77CD04C3CC155588DD3BF67B310AB4FB3B1DA3CF6B8D7D4D2AA1D09B794C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x4D SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FA PUSH1 0x40 PUSH2 0x4728 JUMP JUMPDEST PUSH2 0x2D8E CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x2D98 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x2DDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x2DF7 JUMPI POP PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x2E48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x77686974656C6973742073756D62697373696F6E2070656E64696E6700000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP3 POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2F64 JUMPI PUSH2 0x2EA1 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E94 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4498 JUMP JUMPDEST ISZERO PUSH2 0x2EEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x636F6E7461696E73206F776E65722061646472657373 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F03 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2F5C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x636F6E7461696E7320302061646472657373 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x2E7C JUMP JUMPDEST POP PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2FBE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x1DDA1A5D195B1A5CDD081B9BDD081A5B9A5D1A585B1A5E9959 PUSH1 0x3A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x3002 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x195B5C1D1E481DDA1A5D195B1A5CDD PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x300E PUSH1 0x38 DUP5 DUP5 PUSH2 0x5BB9 JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP6 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP5 DUP3 MSTORE PUSH32 0x9C80B3B5F68B3E017766D59E8D09B34EFE6462B05C398F35CAB9E271D9BC3B9C SWAP3 DUP7 SWAP3 DUP7 SWAP3 PUSH2 0x307B SWAP3 DUP6 SWAP2 DUP6 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3AE6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x30E5 CALLER PUSH2 0x4498 JUMP JUMPDEST PUSH2 0x312F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3137 PUSH2 0x4DC0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3148 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x3152 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x3196 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 DUP1 DUP1 PUSH1 0x60 JUMPDEST DUP7 DUP6 LT ISZERO PUSH2 0x2B58 JUMPI PUSH2 0x31BF DUP7 PUSH1 0x54 PUSH4 0xFFFFFFFF PUSH2 0x5416 AND JUMP JUMPDEST DUP9 DUP7 ADD DUP1 MLOAD PUSH1 0x14 DUP3 ADD MLOAD PUSH1 0x34 SWAP1 SWAP3 ADD DUP1 MLOAD SWAP4 SWAP10 POP PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHR SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3204 PUSH1 0x54 PUSH2 0x31F8 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x5473 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5473 AND JUMP JUMPDEST SWAP5 POP DUP7 DUP6 GT ISZERO PUSH2 0x324B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x6F7574206F6620626F756E6473 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x3261 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE JUMPDEST PUSH2 0x326C DUP5 DUP5 DUP4 PUSH2 0x1CE4 JUMP JUMPDEST POP PUSH2 0x31A6 JUMP JUMPDEST PUSH1 0x4B SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3284 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x328E JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x32D2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x46 SLOAD DUP2 GT ISZERO PUSH2 0x3324 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x1BDD5D081BD9881C985B99D9481B1BD85908185B5BDD5B9D PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3335 PUSH1 0x47 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x475D AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC178D379965E5657B6FC57494E392F121A14119215DFB422AAD7DB4CC03F2D10 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x3374 CALLER PUSH2 0x4498 JUMP JUMPDEST PUSH2 0x33BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x341C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3461 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D0C PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x34BA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x3534 DUP7 PUSH2 0x54CD JUMP JUMPDEST POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP POP DUP1 ISZERO PUSH2 0x35A9 JUMPI DUP2 PUSH2 0x357F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x726174653D3 PUSH1 0xD4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x359F DUP4 PUSH2 0x3593 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x565F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x56B8 AND JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1563 JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x35D6 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x35E0 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x3624 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP1 PUSH2 0x3661 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x76616C75653D3 PUSH1 0xCC SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x36AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x64657374696E6174696F6E3D3 PUSH1 0x9C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x36FC JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x36E9 JUMPI PUSH2 0x36E6 DUP5 DUP5 PUSH2 0x3525 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x36FA PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST POP JUMPDEST PUSH2 0x3707 DUP5 DUP5 DUP5 PUSH2 0x5722 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xD1BA4AC2E2A11B5101F6CB4D978F514A155B421E8EC396D2D9ABAF0BB02917EE SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x4A SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3766 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x37A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x37F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x385A PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1438 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x141A JUMPI POP POP POP POP POP PUSH2 0x3AE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x3897 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D59 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x39 SLOAD DUP2 LT ISZERO PUSH2 0x3A25 JUMPI PUSH1 0x36 PUSH1 0x0 PUSH1 0x39 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x38B5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3A1D JUMPI PUSH1 0x0 PUSH1 0x36 PUSH1 0x0 PUSH1 0x39 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x38F5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE JUMPDEST PUSH1 0x37 SLOAD PUSH2 0x393F SWAP1 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x5416 AND JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x3A07 JUMPI PUSH1 0x39 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3953 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x3979 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x39FF JUMPI PUSH1 0x37 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x39A6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x39CC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x3A07 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x392B JUMP JUMPDEST POP PUSH1 0x37 DUP1 SLOAD SWAP1 PUSH2 0x3A1B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5C1C JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x389A JUMP JUMPDEST POP PUSH32 0xD218C430FA348F4CE67791021B6B89C0C3EACD4EAD1D8F5B83C60038EC28249B CALLER PUSH1 0x39 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x3AB1 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3A93 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x3ACC PUSH1 0x39 PUSH1 0x0 PUSH2 0x5B9B JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x43 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B01 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B49 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x3B58 JUMPI POP PUSH2 0x3B58 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x3BA2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3BF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3C57 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1438 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x141A JUMPI POP POP POP POP POP PUSH2 0x3AE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x3C94 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D59 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3CA0 PUSH1 0x39 PUSH1 0x0 PUSH2 0x5B9B JUMP JUMPDEST PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x13C935EB475AA0F6E931FECE83E2AC44569CE2D53460D29A6DEDAB40B965C8A3 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x37 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3CF6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x47 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x3D67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x76616C75653D3 PUSH1 0xCC SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D70 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x3D7F JUMPI POP PUSH2 0x3D7F CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x3DC9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3DDA PUSH1 0x40 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST PUSH2 0x3DE2 PUSH2 0x30CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FC DUP4 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3E1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0x611B7C0D84FDA988026215BEF9B3E4D81CBCECED7E679BE6D5E044B588467C0E CALLER PUSH2 0x3E45 PUSH2 0x30CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x3E7D CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x3EBC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1CA6 PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x57EC AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ED7 PUSH2 0x583C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3EF7 JUMPI POP DUP1 PUSH2 0x1563 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x3FBC JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3F15 DUP8 PUSH2 0x54CD JUMP JUMPDEST POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP POP DUP1 PUSH2 0x3F67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x746F6B656E206E6F7420617661696C61626C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x3FA2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x726174653D3 PUSH1 0xD4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FB6 DUP4 PUSH2 0x3593 DUP9 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x565F AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3FC9 PUSH2 0x58B2 JUMP JUMPDEST POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP POP DUP1 PUSH2 0x401B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x746F6B656E206E6F7420617661696C61626C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x4061 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x737461626C65636F696E20726174653D3 PUSH1 0x7C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4075 DUP3 PUSH2 0x3593 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x565F AND JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4089 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x40C8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1C00 PUSH1 0x47 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x57EC AND JUMP JUMPDEST PUSH2 0x40E2 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x4121 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x12F0 PUSH1 0x40 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x57EC AND JUMP JUMPDEST PUSH2 0x413B CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x4145 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x4189 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP3 POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4298 JUMPI PUSH2 0x41D5 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E94 JUMPI INVALID JUMPDEST ISZERO PUSH2 0x4220 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x636F6E7461696E73206F776E65722061646472657373 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4237 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x4290 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x636F6E7461696E7320302061646472657373 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x41BD JUMP JUMPDEST POP PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x42EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081A5B9A5D1A585B1A5E9959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x43E0 JUMPI PUSH1 0x36 PUSH1 0x0 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x430A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x43D8 JUMPI PUSH1 0x1 PUSH1 0x36 PUSH1 0x0 DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x4346 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x37 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x439B JUMPI INVALID JUMPDEST DUP4 SLOAD PUSH1 0x1 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x42F2 JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH3 0xFF0000 NOT AND PUSH3 0x10000 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 DUP2 MSTORE PUSH1 0x37 DUP1 SLOAD SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH32 0xB2F6CCCEE7A369E23E293C25AA19BEF80AF11EB26DEBA3EA0F2A02783F752E4A SWAP5 SWAP3 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x60 DUP4 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0x4470 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4452 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x44 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1563 DUP3 PUSH2 0x4697 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x44FA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1B1A5B5A5D08185B1C9958591E481CD95D PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4504 DUP3 DUP3 PUSH2 0x5A21 JUMP JUMPDEST POP PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4522 PUSH1 0x34 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x458B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x41 EQ PUSH2 0x45BC JUMPI POP PUSH1 0x0 PUSH2 0x1563 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x0 BYTE PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0x4602 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x1563 JUMP JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x461A JUMPI POP DUP1 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x462B JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x1563 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP5 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x1 SWAP3 PUSH1 0xA0 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4682 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x4721 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4702 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1216 JUMP JUMPDEST POP SELFBALANCE PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x4743 SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x5473 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x4752 JUMPI POP DUP1 SLOAD PUSH2 0x1216 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x47B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C696D6974206861736E2774206265656E207365742079657400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x47CA DUP4 PUSH2 0x54CD JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x47E1 DUP3 PUSH2 0x5A44 JUMP JUMPDEST DUP1 DUP3 PUSH1 0x1 ADD SLOAD LT ISZERO PUSH2 0x482D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x185D985A5B18589B194F185B5BDD5B9D PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH2 0x4842 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5416 AND JUMP JUMPDEST DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x48AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x48FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x490E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x49F5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x49C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO JUMPDEST PUSH2 0x4A30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D7C PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x4A82 SWAP1 DUP5 SWAP1 PUSH2 0x4BB1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4A99 DUP4 PUSH2 0x54CD JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4AB5 PUSH1 0x45 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAFC72E93 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4B29 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B11 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4B56 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4B87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4B9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4BC3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4A87 JUMP JUMPDEST PUSH2 0x4C14 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4C52 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4C33 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4CB4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4CB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4D10 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4D69 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4D69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D2F PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3C DUP1 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH1 0x5C SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x4C DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD PUSH32 0xAB0423A75986556234AECD171C46CE7F5E45607D8070BF5230F2735B50322BFF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x4E27 JUMPI POP PUSH2 0x4E27 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x4E35 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x4E70 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x4E9B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x4EC6 JUMPI PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE JUMPDEST DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x4EF5 JUMPI POP PUSH2 0x4EF5 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x4F03 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x4F3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x4F69 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO PUSH2 0x4EC6 JUMPI PUSH1 0x34 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x4FA2 JUMPI POP PUSH2 0x4FA2 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x4FB0 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x4FEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5016 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP5 ISZERO ISZERO DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0xFF SWAP2 DIV AND PUSH2 0x508E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 DUP1 ISZERO PUSH2 0x4A82 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x5101 JUMPI POP PUSH2 0x5101 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x510F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x514A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5175 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE TIMESTAMP SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD DUP2 SWAP1 MSTORE PUSH1 0x3B DUP5 SWAP1 SSTORE PUSH1 0x3C DUP5 SWAP1 SSTORE PUSH1 0x3D SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3E SSTORE PUSH1 0x3F DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x51EC JUMPI POP PUSH2 0x51EC PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x51FA JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x5235 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5260 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH8 0x6F05B59D3B20000 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP DUP3 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP4 ADD DUP4 SWAP1 MSTORE SWAP3 DUP2 SWAP1 SSTORE PUSH1 0x41 SSTORE PUSH1 0x42 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x43 SSTORE PUSH1 0x44 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP1 ISZERO PUSH2 0x52C1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x52DD JUMPI POP PUSH2 0x52DD PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x52EB JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x5326 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5351 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH2 0x535A DUP3 PUSH2 0x5A9C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5364 PUSH2 0x58B2 JUMP JUMPDEST POP POP POP POP POP SWAP2 POP POP PUSH1 0x0 DUP2 GT PUSH2 0x53B1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x37379039BA30B13632B1B7B4B7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2710 MUL PUSH1 0x46 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE TIMESTAMP SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD DUP2 SWAP1 MSTORE PUSH1 0x47 DUP4 SWAP1 SSTORE PUSH1 0x48 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x49 SSTORE PUSH1 0x4A SSTORE PUSH1 0x4B DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x546D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x21D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x54E3 PUSH1 0x45 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1F69565F DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x554C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x5594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x55A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x55C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x55EF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x55D7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x561C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP6 ADD MLOAD SWAP8 SWAP15 POP SWAP3 SWAP13 POP SWAP1 SWAP11 POP SWAP9 POP SWAP7 POP SWAP5 POP SWAP2 SWAP3 POP POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP1 SWAP3 SWAP5 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x566E JUMPI POP PUSH1 0x0 PUSH2 0x1563 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x567B JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x21D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CBD PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x570E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x5719 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x57D2 JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP4 SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x577B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5780 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x57CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x1CD85999551C985B9CD9995C8819985A5B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x4A82 JUMP JUMPDEST PUSH2 0x4A82 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP5 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x5B49 AND JUMP JUMPDEST DUP1 DUP3 PUSH1 0x3 ADD SLOAD EQ PUSH2 0x582E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C7B PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4ED8 DUP3 DUP4 PUSH1 0x3 ADD SLOAD PUSH2 0x5A21 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5849 PUSH1 0x45 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE9CBD822 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5881 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5895 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x58AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x58C8 PUSH1 0x45 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3EFEC5E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x593D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x595C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x598A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59B7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x599F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x59E4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP6 ADD MLOAD SWAP8 SWAP16 SWAP4 SWAP15 POP SWAP2 SWAP13 POP SWAP11 POP SWAP9 POP SWAP1 SWAP7 POP SWAP3 SWAP5 POP SWAP2 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x5A2A DUP3 PUSH2 0x5A44 JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x4ED8 JUMPI DUP2 SLOAD PUSH1 0x1 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0x5A5C SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x5473 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x52C1 JUMPI TIMESTAMP PUSH1 0x2 DUP3 ADD SSTORE DUP1 SLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xE93BC25276D408D390778E7A8B926F2F67209C43ED540081B951FE128F0D3CD2 SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x5AB5 JUMPI POP PUSH2 0x5AB5 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x5AC3 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x5AFE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5B29 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO PUSH2 0x4EC6 JUMPI PUSH1 0x45 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x4A82 SWAP1 DUP5 SWAP1 PUSH2 0x4BB1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x52C1 SWAP2 SWAP1 PUSH2 0x5C3C JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x5C0C JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5C0C JUMPI DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 CALLDATALOAD AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x5BD9 JUMP JUMPDEST POP PUSH2 0x5C18 SWAP3 SWAP2 POP PUSH2 0x5C56 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x4A82 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x4A82 SWAP2 DUP2 ADD SWAP1 DUP4 ADD JUMPDEST PUSH2 0x121F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5C18 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C42 JUMP JUMPDEST PUSH2 0x121F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5C18 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C5C JUMP INVALID PUSH4 0x6F6E6669 PUSH19 0x6D65642F7375626D6974746564206C696D6974 KECCAK256 PUSH14 0x69736D6174636873656E64657220 PUSH10 0x73206E6F74206120636F PUSH15 0x74726F6C6C65720000000000005361 PUSH7 0x654D6174683A20 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77436F6E747261637420 PUSH10 0x6E7374616E6365206861 PUSH20 0x20616C7265616479206265656E20696E69746961 PUSH13 0x697A65646F776E65722063616E PUSH15 0x6F742062652073657420746F207A65 PUSH19 0x6F20616464726573735361666545524332303A KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x7563636565646E6F6E2D6D61746368696E672070 PUSH6 0x6E64696E6720 PUSH24 0x686974656C69737420686173685361666545524332303A20 PUSH2 0x7070 PUSH19 0x6F76652066726F6D206E6F6E2D7A65726F2074 PUSH16 0x206E6F6E2D7A65726F20616C6C6F7761 PUSH15 0x6365A265627A7A723158200650F450 0xC2 0xD8 0xF8 0xFC PUSH22 0x477F70E683F64B5CC64733A3582CE80A54555FD95DD9 SUB PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "22334:17725:31:-;;;1311:82:25;;;-1:-1:-1;;;;;;1311:82:25;1350:42;1311:82;;;1162:66:24;1312:58;;1143:66:27;1304:67;;22334:17725:31;5:2:-1;;;;30:1;27;20:12;5:2;22334:17725:31;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "6080604052600436106103a25760003560e01c80637fd004fa116101e7578063cc0e7e561161010d578063e61c51ca116100a0578063f41c43191161006f578063f41c431914611114578063f42176481461113e578063f776f518146111b9578063f8b2cb4f146111ce576103a2565b8063e61c51ca1461105d578063eadd3cea14611087578063f36febda146110b1578063f40b51f8146110ea576103a2565b8063d251fefc116100dc578063d251fefc14610ff4578063da84b1ed1461101e578063de212bf314611033578063e2b4ce9714611048576103a2565b8063cc0e7e5614610ef2578063cccdc55614610f07578063cd7958dd14610f1c578063ce0b5bd514610fca576103a2565b8063b221f31611610185578063be40ba7911610154578063be40ba7914610e5b578063beabacc814610e70578063c4856cd914610eb3578063cbd2ac6814610ec8576103a2565b8063b221f31614610da8578063b242e53414610dd2578063b87e21ef14610e0d578063bcb8b74a14610e46576103a2565b806390e690c7116101c157806390e690c714610cb85780639b0dfd2714610ccd578063aaf1fc6214610ce2578063ab20599314610d93576103a2565b80637fd004fa14610c13578063877337b014610c8e5780638da5cb5b14610ca3576103a2565b80633a43199f116102cc5780635d2362a81161026a57806374624c551161023957806374624c5514610b8e578063747c31d614610bb85780637d73b23114610bcd5780637d7d004614610bfe576103a2565b80635d2362a814610a8e5780636137d67014610aa357806369efdfc014610b1e578063715018a614610b79576103a2565b80633f579f42116102a65780633f579f42146108b757806346efe0ed1461097d57806347b55a9d14610a4f5780635adc02ab14610a64576103a2565b80633a43199f146108375780633bfec254146108635780633c672eb71461088d576103a2565b80631efd0299116103445780632587a6a2116103135780632587a6a21461077557806326d05ab21461078a578063294f40251461079f57806332531c3c14610804576103a2565b80631efd02991461065657806320c13b0b1461066b5780632121dc751461073657806321ce918d1461074b576103a2565b8063100f23fd11610380578063100f23fd146104425780631127b57e1461046c5780631626ba7e146104f65780631aa21fba146105cb576103a2565b806301ffc9a7146103a7578063027ef3eb146103ef5780630f3a85d814610416575b600080fd5b3480156103b357600080fd5b506103db600480360360208110156103ca57600080fd5b50356001600160e01b031916611201565b604080519115158252519081900360200190f35b3480156103fb57600080fd5b5061040461121b565b60408051918252519081900360200190f35b34801561042257600080fd5b506104406004803603602081101561043957600080fd5b5035611222565b005b34801561044e57600080fd5b506104406004803603602081101561046557600080fd5b503561132e565b34801561047857600080fd5b506104816114d3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104bb5781810151838201526020016104a3565b50505050905090810190601f1680156104e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561050257600080fd5b506105ae6004803603604081101561051957600080fd5b81359190810190604081016020820135600160201b81111561053a57600080fd5b82018360208201111561054c57600080fd5b803590602001918460018302840111600160201b8311171561056d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506114f4945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105d757600080fd5b50610440600480360360408110156105ee57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561061857600080fd5b82018360208201111561062a57600080fd5b803590602001918460208302840111600160201b8311171561064b57600080fd5b509092509050611569565b34801561066257600080fd5b506104046116ee565b34801561067757600080fd5b506105ae6004803603604081101561068e57600080fd5b810190602081018135600160201b8111156106a857600080fd5b8201836020820111156106ba57600080fd5b803590602001918460018302840111600160201b831117156106db57600080fd5b919390929091602081019035600160201b8111156106f857600080fd5b82018360208201111561070a57600080fd5b803590602001918460018302840111600160201b8311171561072b57600080fd5b5090925090506116ff565b34801561074257600080fd5b506103db6117d4565b34801561075757600080fd5b506104406004803603602081101561076e57600080fd5b50356117e4565b34801561078157600080fd5b50610404611882565b34801561079657600080fd5b506103db611888565b3480156107ab57600080fd5b506107b4611891565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107f05781810151838201526020016107d8565b505050509050019250505060405180910390f35b34801561081057600080fd5b506103db6004803603602081101561082757600080fd5b50356001600160a01b03166118f3565b6104406004803603604081101561084d57600080fd5b506001600160a01b038135169060200135611908565b34801561086f57600080fd5b506104406004803603602081101561088657600080fd5b5035611b46565b34801561089957600080fd5b50610440600480360360208110156108b057600080fd5b5035611c3e565b3480156108c357600080fd5b50610481600480360360608110156108da57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561090957600080fd5b82018360208201111561091b57600080fd5b803590602001918460018302840111600160201b8311171561093c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611ce4945050505050565b34801561098957600080fd5b50610440600480360360608110156109a057600080fd5b81359190810190604081016020820135600160201b8111156109c157600080fd5b8201836020820111156109d357600080fd5b803590602001918460018302840111600160201b831117156109f457600080fd5b919390929091602081019035600160201b811115610a1157600080fd5b820183602082011115610a2357600080fd5b803590602001918460018302840111600160201b83111715610a4457600080fd5b5090925090506121db565b348015610a5b57600080fd5b506107b461251c565b348015610a7057600080fd5b5061044060048036036020811015610a8757600080fd5b503561257c565b348015610a9a57600080fd5b5061040461284c565b348015610aaf57600080fd5b5061044060048036036020811015610ac657600080fd5b810190602081018135600160201b811115610ae057600080fd5b820183602082011115610af257600080fd5b803590602001918460208302840111600160201b83111715610b1357600080fd5b509092509050612858565b348015610b2a57600080fd5b50610440600480360360e0811015610b4157600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c00135612a7e565b348015610b8557600080fd5b50610440612b62565b348015610b9a57600080fd5b5061044060048036036020811015610bb157600080fd5b5035612c60565b348015610bc457600080fd5b50610404612d64565b348015610bd957600080fd5b50610be2612d6a565b604080516001600160a01b039092168252519081900360200190f35b348015610c0a57600080fd5b50610404612d79565b348015610c1f57600080fd5b5061044060048036036020811015610c3657600080fd5b810190602081018135600160201b811115610c5057600080fd5b820183602082011115610c6257600080fd5b803590602001918460208302840111600160201b83111715610c8357600080fd5b509092509050612d85565b348015610c9a57600080fd5b506104046130c7565b348015610caf57600080fd5b50610be26130cd565b348015610cc457600080fd5b506104406130dc565b348015610cd957600080fd5b50610404613139565b348015610cee57600080fd5b5061044060048036036020811015610d0557600080fd5b810190602081018135600160201b811115610d1f57600080fd5b820183602082011115610d3157600080fd5b803590602001918460018302840111600160201b83111715610d5257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061313f945050505050565b348015610d9f57600080fd5b506103db613272565b348015610db457600080fd5b5061044060048036036020811015610dcb57600080fd5b503561327b565b348015610dde57600080fd5b5061044060048036036040811015610df557600080fd5b506001600160a01b038135169060200135151561336b565b348015610e1957600080fd5b5061040460048036036040811015610e3057600080fd5b506001600160a01b038135169060200135613525565b348015610e5257600080fd5b506103db6135b5565b348015610e6757600080fd5b506103db6135be565b348015610e7c57600080fd5b5061044060048036036060811015610e9357600080fd5b506001600160a01b038135811691602081013590911690604001356135cd565b348015610ebf57600080fd5b50610404613757565b348015610ed457600080fd5b5061044060048036036020811015610eeb57600080fd5b503561375d565b348015610efe57600080fd5b50610404613ada565b348015610f1357600080fd5b50610404613ae0565b348015610f2857600080fd5b5061040460048036036020811015610f3f57600080fd5b810190602081018135600160201b811115610f5957600080fd5b820183602082011115610f6b57600080fd5b803590602001918460208302840111600160201b83111715610f8c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613ae6945050505050565b348015610fd657600080fd5b5061044060048036036020811015610fed57600080fd5b5035613b40565b34801561100057600080fd5b50610be26004803603602081101561101757600080fd5b5035613ce9565b34801561102a57600080fd5b50610404613d10565b34801561103f57600080fd5b506103db613d16565b34801561105457600080fd5b50610404613d24565b34801561106957600080fd5b506104406004803603602081101561108057600080fd5b5035613d2a565b34801561109357600080fd5b50610440600480360360208110156110aa57600080fd5b5035613e74565b3480156110bd57600080fd5b50610404600480360360408110156110d457600080fd5b506001600160a01b038135169060200135613ecd565b3480156110f657600080fd5b506104406004803603602081101561110d57600080fd5b5035614080565b34801561112057600080fd5b506104406004803603602081101561113757600080fd5b50356140d9565b34801561114a57600080fd5b506104406004803603602081101561116157600080fd5b810190602081018135600160201b81111561117b57600080fd5b82018360208201111561118d57600080fd5b803590602001918460208302840111600160201b831117156111ae57600080fd5b509092509050614132565b3480156111c557600080fd5b506103db614484565b3480156111da57600080fd5b50610404600480360360208110156111f157600080fd5b50356001600160a01b031661448d565b6001600160e01b031981166301ffc9a760e01b145b919050565b603e545b90565b61122b33614498565b8061123557503330145b611279576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561129857506706f05b59d3b200008111155b6112df576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b6112f060408263ffffffff6144ac16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b61133733614498565b80611346575061134633614515565b611390576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a5460ff166113df576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611442603880548060200260200160405190810160405280929190818152602001828054801561143857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161141a575b5050505050613ae6565b811461147f5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b61148b60386000615b9b565b603a805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b600080611507848463ffffffff6145a916565b905061151281614498565b611557576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61157233614498565b8061157c57503330145b6115c0576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b80611609576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b8181101561166b57600061163a84848481811061162557fe5b905060200201356001600160a01b0316614697565b90506116628585858581811061164c57fe5b905060200201356001600160a01b0316836135cd565b5060010161160c565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60006116fa6047614728565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061177694508693508991508890819084018382808284376000920191909152506114f492505050565b6001600160e01b031916146117c2576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b603554600160a01b900460ff1690565b6117ed33614498565b806117f757503330145b61183b576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b61184c603b8263ffffffff61475d16565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60405490565b603a5460ff1681565b606060398054806020026020016040519081016040528092919081815260200182805480156118e957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118cb575b5050505050905090565b60366020526000908152604090205460ff1681565b61191133614498565b8061191b57503330145b61195f576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611968826147be565b6119ae576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b60006119ba8383613ecd565b90506119cd60478263ffffffff6147d816565b60006119da604d5461484e565b90506001600160a01b03841615611a8257611a056001600160a01b038516828563ffffffff61496f16565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611a6557600080fd5b505af1158015611a79573d6000803e3d6000fd5b50505050611afc565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611ae257600080fd5b505af1158015611af6573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611b4f33614498565b80611b5957503330145b611b9d576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b604654811115611bef576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611c0060478263ffffffff6144ac16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611c4733614498565b80611c5157503330145b611c95576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611ca6603b8263ffffffff6144ac16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611cef33614498565b80611cf957503330145b611d3d576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff16611d6e57611d6e603b8463ffffffff6147d816565b611d80846001600160a01b0316614a87565b8015611d905750611d9084614a8d565b15611f7757600080611da28685614aa7565b6001600160a01b038216600090815260366020526040902054919350915060ff16611de8576000611dd38783613525565b9050611de6603b8263ffffffff6147d816565b505b611e016001600160a01b0387168563ffffffff614bb116565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611e3457fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611ecf578181015183820152602001611eb7565b50505050905090810190601f168015611efc5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611f2f578181015183820152602001611f17565b50505050905090810190601f168015611f5c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a192506121d4915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611fb65780518252601f199092019160209182019101611f97565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612018576040519150601f19603f3d011682016040523d82523d6000602084013e61201d565b606091505b50915091508181906120ad5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561207257818101518382015260200161205a565b50505050905090810190601f16801561209f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561213257818101518382015260200161211a565b50505050905090810190601f16801561215f5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561219257818101518382015260200161217a565b50505050905090810190601f1680156121bf5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b6121e433614515565b612223576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b600046905060006122a3823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614d6f565b9050631626ba7e60e01b6001600160e01b0319166122f78286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114f492505050565b6001600160e01b03191614612343576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b604c548714612385576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b61238d614dc0565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d80600081146123ed576040519150601f19603f3d011682016040523d82523d6000602084013e6123f2565b606091505b50915091508181906124455760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561207257818101518382015260200161205a565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b838110156124d45781810151838201526020016124bc565b50505050905090810190601f1680156125015780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b606060388054806020026020016040519081016040528092919081815260200182805480156118e9576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118cb575050505050905090565b61258533614515565b6125c4576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b603a5460ff16612613576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6126746038805480602002602001604051908101604052809291908181526020018280548015611438576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161141a575050505050613ae6565b81146126b15760405162461bcd60e51b8152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b60005b6038548110156127985760366000603883815481106126cf57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612790576001603660006038848154811061270e57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560388054603791908390811061275457fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b6001016126b4565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603860405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561282457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612806575b5050935050505060405180910390a161283f60386000615b9b565b50603a805460ff19169055565b60006116fa603b614728565b61286133614498565b8061286b57503330145b6128af576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff161580156128ca5750603a54610100900460ff16155b61291b576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603a5462010000900460ff16612974576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806129b8576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6129c460398383615bb9565b50603a805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d19285928592612a3392859185918291850190849080828437600092019190915250613ae692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff1680612a975750612a97614e08565b80612aa5575060005460ff16155b612ae05760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015612b0b576000805460ff1961ff0019909116610100171660011790555b612b1486614e0e565b612b1d84614edc565b612b278888614f89565b612b30826150e8565b612b386151d3565b612b41856152c4565b604d8390558015612b58576000805461ff00191690555b5050505050505050565b612b6b33614498565b612bb5576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff16612c13576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612c6933614498565b80612c7357503330145b612cb7576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612cd657506706f05b59d3b200008111155b612d1d576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612d2e60408263ffffffff61475d16565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b604d5490565b6033546001600160a01b031690565b60006116fa6040614728565b612d8e33614498565b80612d9857503330145b612ddc576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b603a5460ff16158015612df75750603a54610100900460ff16155b612e48576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612f6457612ea1828281518110612e9457fe5b6020026020010151614498565b15612eec576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612f0357fe5b60200260200101516001600160a01b03161415612f5c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612e7c565b50603a5462010000900460ff16612fbe576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81613002576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61300e60388484615bb9565b50603a805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c928692869261307b92859185918291850190849080828437600092019190915250613ae692505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60455490565b6035546001600160a01b031690565b6130e533614498565b61312f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b613137614dc0565b565b603b5490565b61314833614498565b8061315257503330145b613196576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b86851015612b58576131bf86605463ffffffff61541616565b888601805160148201516034909201805193995060609190911c9650909450909250905061320460546131f8878563ffffffff61547316565b9063ffffffff61547316565b94508685111561324b576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161326157506040805160208101909152600081525b61326c848483611ce4565b506131a6565b604b5460ff1690565b61328433614498565b8061328e57503330145b6132d2576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b604654811115613324576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b61333560478263ffffffff61475d16565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61337433614498565b6133be576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b603554600160a01b900460ff1661341c576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166134615760405162461bcd60e51b8152600401808060200182810382526023815260200180615d0c6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b83151502179055806134ba57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b600080600080613534866154cd565b5050509350935093505080156135a9578161357f576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b61359f83613593878563ffffffff61565f16565b9063ffffffff6156b816565b9350505050611563565b50600095945050505050565b603f5460ff1690565b603a5462010000900460ff1681565b6135d633614498565b806135e057503330145b613624576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8080613661576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b0384166136ac576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526036602052604090205460ff166136fc57816001600160a01b038416156136e9576136e68484613525565b90505b6136fa603b8263ffffffff6147d816565b505b613707848484615722565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b604a5490565b61376633614515565b6137a5576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b603a54610100900460ff166137f9576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61385a6039805480602002602001604051908101604052809291908181526020018280548015611438576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161141a575050505050613ae6565b81146138975760405162461bcd60e51b8152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b60005b603954811015613a255760366000603983815481106138b557fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615613a1d57600060366000603984815481106138f557fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b60375461393f90600163ffffffff61541616565b811015613a07576039828154811061395357fe5b600091825260209091200154603780546001600160a01b03909216918390811061397957fe5b6000918252602090912001546001600160a01b031614156139ff576037805460001981019081106139a657fe5b600091825260209091200154603780546001600160a01b0390921691839081106139cc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613a07565b60010161392b565b506037805490613a1b906000198301615c1c565b505b60010161389a565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603960405180836001600160a01b03166001600160a01b03168152602001806020018281038252838181548152602001915080548015613ab157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613a93575b5050935050505060405180910390a1613acc60396000615b9b565b50603a805461ff0019169055565b60435490565b604c5481565b60008160405160200180828051906020019060200280838360005b83811015613b19578181015183820152602001613b01565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613b4933614498565b80613b585750613b5833614515565b613ba2576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b603a54610100900460ff16613bf6576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613c576039805480602002602001604051908101604052809291908181526020018280548015611438576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161141a575050505050613ae6565b8114613c945760405162461bcd60e51b8152600401808060200182810382526023815260200180615d596023913960400191505060405180910390fd5b613ca060396000615b9b565b603a805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60378181548110613cf657fe5b6000918252602090912001546001600160a01b0316905081565b60475490565b603a54610100900460ff1681565b60345490565b8080613d67576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613d7033614498565b80613d7f5750613d7f33614515565b613dc9576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613dda60408363ffffffff6147d816565b613de26130cd565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613e1a573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613e456130cd565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613e7d33614515565b613ebc576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b611ca6603b8263ffffffff6157ec16565b6000613ed761583c565b6001600160a01b0316836001600160a01b03161415613ef7575080611563565b816001600160a01b03841615613fbc576000806000613f15876154cd565b5050509350935093505080613f67576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613fa2576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613fb683613593888563ffffffff61565f16565b93505050505b6000806000613fc96158b2565b505050935093509350508061401b576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81614061576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b61407582613593868663ffffffff61565f16565b979650505050505050565b61408933614515565b6140c8576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b611c0060478263ffffffff6157ec16565b6140e233614515565b614121576040805162461bcd60e51b815260206004820152601a6024820152600080516020615c9d833981519152604482015290519081900360640190fd5b6112f060408263ffffffff6157ec16565b61413b33614498565b8061414557503330145b614189576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015614298576141d5828281518110612e9457fe5b15614220576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061423757fe5b60200260200101516001600160a01b03161415614290576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b6001016141bd565b50603a5462010000900460ff16156142ef576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b828110156143e0576036600085858481811061430a57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff166143d85760016036600086868581811061434657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550603784848381811061439b57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016142f2565b50603a805462ff0000191662010000179055604080513380825260208201838152603780549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561447057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311614452575b5050935050505060405180910390a1505050565b60445460ff1690565b600061156382614697565b6035546001600160a01b0390811691161490565b600482015460ff16156144fa576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6145048282615a21565b50600401805460ff19166001179055565b600061452260345461484e565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561457757600080fd5b505afa15801561458b573d6000803e3d6000fd5b505050506040513d60208110156145a157600080fd5b505192915050565b600081516041146145bc57506000611563565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156146025760009350505050611563565b8060ff16601b1415801561461a57508060ff16601c14155b1561462b5760009350505050611563565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614682573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b0382161561472157604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156146ee57600080fd5b505afa158015614702573d6000803e3d6000fd5b505050506040513d602081101561471857600080fd5b50519050611216565b5047611216565b6002810154600090614743906201518063ffffffff61547316565b42111561475257508054611216565b506001810154611216565b600482015460ff166147b6576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b6000806147ca836154cd565b509098975050505050505050565b6147e182615a44565b808260010154101561482d576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b6001820154614842908263ffffffff61541616565b82600101819055505050565b6033546000906001600160a01b03166148ae576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156148fa57600080fd5b505afa15801561490e573d6000803e3d6000fd5b505050506040513d602081101561492457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561457757600080fd5b8015806149f5575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156149c757600080fd5b505afa1580156149db573d6000803e3d6000fd5b505050506040513d60208110156149f157600080fd5b5051155b614a305760405162461bcd60e51b8152600401808060200182810382526036815260200180615d7c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614a82908490614bb1565b505050565b3b151590565b600080614a99836154cd565b509198975050505050505050565b600080614ab560455461484e565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614b29578181015183820152602001614b11565b50505050905090810190601f168015614b565780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b158015614b7357600080fd5b505afa158015614b87573d6000803e3d6000fd5b505050506040513d6040811015614b9d57600080fd5b508051602090910151909590945092505050565b614bc3826001600160a01b0316614a87565b614c14576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614c525780518252601f199092019160209182019101614c33565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614cb4576040519150601f19603f3d011682016040523d82523d6000602084013e614cb9565b606091505b509150915081614d10576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614d6957808060200190516020811015614d2c57600080fd5b5051614d695760405162461bcd60e51b815260040180806020018281038252602a815260200180615d2f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b604c80546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b303b1590565b600054610100900460ff1680614e275750614e27614e08565b80614e35575060005460ff16155b614e705760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015614e9b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b03821615614ec657603380546001600160a01b0319166001600160a01b0384161790555b8015614ed8576000805461ff00191690555b5050565b600054610100900460ff1680614ef55750614ef5614e08565b80614f03575060005460ff16155b614f3e5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015614f69576000805460ff1961ff0019909116610100171660011790555b8115614ec65760348290558015614ed8576000805461ff00191690555050565b600054610100900460ff1680614fa25750614fa2614e08565b80614fb0575060005460ff16155b614feb5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615016576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff91041661508e57604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a18015614a82576000805461ff0019169055505050565b600054610100900460ff16806151015750615101614e08565b8061510f575060005460ff16155b61514a5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615175576000805460ff1961ff0019909116610100171660011790555b6040805160a08101825283815260208101849052429181018290526000606082018190526080909101819052603b849055603c849055603d91909155603e55603f805460ff191690558015614ed8576000805461ff00191690555050565b600054610100900460ff16806151ec57506151ec614e08565b806151fa575060005460ff16155b6152355760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615260576000805460ff1961ff0019909116610100171660011790555b6040805160a0810182526706f05b59d3b2000080825260208201819052428284018190526000606084018190526080909301839052928190556041556042919091556043556044805460ff1916905580156152c1576000805461ff00191690555b50565b600054610100900460ff16806152dd57506152dd614e08565b806152eb575060005460ff16155b6153265760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615351576000805460ff1961ff0019909116610100171660011790555b61535a82615a9c565b60006153646158b2565b5050505050915050600081116153b1576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260468190556040805160a081018252828152602081018390524291810182905260006060820181905260809091018190526047839055604892909255604955604a55604b805460ff191690558015614ed8576000805461ff00191690555050565b60008282111561546d576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156121d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60606000806000806000806154e360455461484e565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561553857600080fd5b505afa15801561554c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561557557600080fd5b8101908080516040519392919084600160201b82111561559457600080fd5b9083019060208201858111156155a957600080fd5b8251600160201b8111828201881017156155c257600080fd5b82525081516020918201929091019080838360005b838110156155ef5781810151838201526020016155d7565b50505050905090810190601f16801561561c5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008261566e57506000611563565b8282028284828161567b57fe5b04146121d45760405162461bcd60e51b8152600401808060200182810382526021815260200180615cbd6021913960400191505060405180910390fd5b600080821161570e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161571957fe5b04949350505050565b6001600160a01b0382166157d2576040516000906001600160a01b0385169083908381818185875af1925050503d806000811461577b576040519150601f19603f3d011682016040523d82523d6000602084013e615780565b606091505b50509050806157cc576040805162461bcd60e51b81526020600482015260136024820152721cd85999551c985b9cd9995c8819985a5b1959606a1b604482015290519081900360640190fd5b50614a82565b614a826001600160a01b038316848363ffffffff615b4916565b8082600301541461582e5760405162461bcd60e51b8152600401808060200182810382526022815260200180615c7b6022913960400191505060405180910390fd5b614ed8828360030154615a21565b600061584960455461484e565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561588157600080fd5b505afa158015615895573d6000803e3d6000fd5b505050506040513d60208110156158ab57600080fd5b5051905090565b60606000806000806000806158c860455461484e565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561590057600080fd5b505afa158015615914573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561593d57600080fd5b8101908080516040519392919084600160201b82111561595c57600080fd5b90830190602082018581111561597157600080fd5b8251600160201b81118282018810171561598a57600080fd5b82525081516020918201929091019080838360005b838110156159b757818101518382015260200161599f565b50505050905090810190601f1680156159e45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b615a2a82615a44565b8082556001820154811015614ed857815460018301555050565b6002810154615a5c906201518063ffffffff61547316565b4211156152c157426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a150565b600054610100900460ff1680615ab55750615ab5614e08565b80615ac3575060005460ff16155b615afe5760405162461bcd60e51b815260040180806020018281038252602e815260200180615cde602e913960400191505060405180910390fd5b600054610100900460ff16158015615b29576000805460ff1961ff0019909116610100171660011790555b8115614ec65760458290558015614ed8576000805461ff00191690555050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052614a82908490614bb1565b50805460008255906000526020600020908101906152c19190615c3c565b828054828255906000526020600020908101928215615c0c579160200282015b82811115615c0c5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615bd9565b50615c18929150615c56565b5090565b815481835581811115614a8257600083815260209020614a829181019083015b61121f91905b80821115615c185760008155600101615c42565b61121f91905b80821115615c185780546001600160a01b0319168155600101615c5c56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65646f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158200650f450c2d8f8fc75477f70e683f64b5cc64733a3582ce80a54555fd95dd90364736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3A2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7FD004FA GT PUSH2 0x1E7 JUMPI DUP1 PUSH4 0xCC0E7E56 GT PUSH2 0x10D JUMPI DUP1 PUSH4 0xE61C51CA GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xF41C4319 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xF41C4319 EQ PUSH2 0x1114 JUMPI DUP1 PUSH4 0xF4217648 EQ PUSH2 0x113E JUMPI DUP1 PUSH4 0xF776F518 EQ PUSH2 0x11B9 JUMPI DUP1 PUSH4 0xF8B2CB4F EQ PUSH2 0x11CE JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xE61C51CA EQ PUSH2 0x105D JUMPI DUP1 PUSH4 0xEADD3CEA EQ PUSH2 0x1087 JUMPI DUP1 PUSH4 0xF36FEBDA EQ PUSH2 0x10B1 JUMPI DUP1 PUSH4 0xF40B51F8 EQ PUSH2 0x10EA JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xD251FEFC GT PUSH2 0xDC JUMPI DUP1 PUSH4 0xD251FEFC EQ PUSH2 0xFF4 JUMPI DUP1 PUSH4 0xDA84B1ED EQ PUSH2 0x101E JUMPI DUP1 PUSH4 0xDE212BF3 EQ PUSH2 0x1033 JUMPI DUP1 PUSH4 0xE2B4CE97 EQ PUSH2 0x1048 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xCC0E7E56 EQ PUSH2 0xEF2 JUMPI DUP1 PUSH4 0xCCCDC556 EQ PUSH2 0xF07 JUMPI DUP1 PUSH4 0xCD7958DD EQ PUSH2 0xF1C JUMPI DUP1 PUSH4 0xCE0B5BD5 EQ PUSH2 0xFCA JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xB221F316 GT PUSH2 0x185 JUMPI DUP1 PUSH4 0xBE40BA79 GT PUSH2 0x154 JUMPI DUP1 PUSH4 0xBE40BA79 EQ PUSH2 0xE5B JUMPI DUP1 PUSH4 0xBEABACC8 EQ PUSH2 0xE70 JUMPI DUP1 PUSH4 0xC4856CD9 EQ PUSH2 0xEB3 JUMPI DUP1 PUSH4 0xCBD2AC68 EQ PUSH2 0xEC8 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0xB221F316 EQ PUSH2 0xDA8 JUMPI DUP1 PUSH4 0xB242E534 EQ PUSH2 0xDD2 JUMPI DUP1 PUSH4 0xB87E21EF EQ PUSH2 0xE0D JUMPI DUP1 PUSH4 0xBCB8B74A EQ PUSH2 0xE46 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x90E690C7 GT PUSH2 0x1C1 JUMPI DUP1 PUSH4 0x90E690C7 EQ PUSH2 0xCB8 JUMPI DUP1 PUSH4 0x9B0DFD27 EQ PUSH2 0xCCD JUMPI DUP1 PUSH4 0xAAF1FC62 EQ PUSH2 0xCE2 JUMPI DUP1 PUSH4 0xAB205993 EQ PUSH2 0xD93 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x7FD004FA EQ PUSH2 0xC13 JUMPI DUP1 PUSH4 0x877337B0 EQ PUSH2 0xC8E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCA3 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x3A43199F GT PUSH2 0x2CC JUMPI DUP1 PUSH4 0x5D2362A8 GT PUSH2 0x26A JUMPI DUP1 PUSH4 0x74624C55 GT PUSH2 0x239 JUMPI DUP1 PUSH4 0x74624C55 EQ PUSH2 0xB8E JUMPI DUP1 PUSH4 0x747C31D6 EQ PUSH2 0xBB8 JUMPI DUP1 PUSH4 0x7D73B231 EQ PUSH2 0xBCD JUMPI DUP1 PUSH4 0x7D7D0046 EQ PUSH2 0xBFE JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x5D2362A8 EQ PUSH2 0xA8E JUMPI DUP1 PUSH4 0x6137D670 EQ PUSH2 0xAA3 JUMPI DUP1 PUSH4 0x69EFDFC0 EQ PUSH2 0xB1E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xB79 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x3F579F42 GT PUSH2 0x2A6 JUMPI DUP1 PUSH4 0x3F579F42 EQ PUSH2 0x8B7 JUMPI DUP1 PUSH4 0x46EFE0ED EQ PUSH2 0x97D JUMPI DUP1 PUSH4 0x47B55A9D EQ PUSH2 0xA4F JUMPI DUP1 PUSH4 0x5ADC02AB EQ PUSH2 0xA64 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x3A43199F EQ PUSH2 0x837 JUMPI DUP1 PUSH4 0x3BFEC254 EQ PUSH2 0x863 JUMPI DUP1 PUSH4 0x3C672EB7 EQ PUSH2 0x88D JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x1EFD0299 GT PUSH2 0x344 JUMPI DUP1 PUSH4 0x2587A6A2 GT PUSH2 0x313 JUMPI DUP1 PUSH4 0x2587A6A2 EQ PUSH2 0x775 JUMPI DUP1 PUSH4 0x26D05AB2 EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0x294F4025 EQ PUSH2 0x79F JUMPI DUP1 PUSH4 0x32531C3C EQ PUSH2 0x804 JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x1EFD0299 EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0x20C13B0B EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x2121DC75 EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0x21CE918D EQ PUSH2 0x74B JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x100F23FD GT PUSH2 0x380 JUMPI DUP1 PUSH4 0x100F23FD EQ PUSH2 0x442 JUMPI DUP1 PUSH4 0x1127B57E EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x4F6 JUMPI DUP1 PUSH4 0x1AA21FBA EQ PUSH2 0x5CB JUMPI PUSH2 0x3A2 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x27EF3EB EQ PUSH2 0x3EF JUMPI DUP1 PUSH4 0xF3A85D8 EQ PUSH2 0x416 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x1201 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x121B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x439 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1222 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x132E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x481 PUSH2 0x14D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4E8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x53A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x56D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x14F4 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1569 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x662 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x16EE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5AE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x72B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x16FF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x17D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x1882 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x1888 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7B4 PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7F0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7D8 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18F3 JUMP JUMPDEST PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x84D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1908 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1B46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x899 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1C3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x481 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1CE4 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x9C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x9F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xA44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x21DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7B4 PUSH2 0x251C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x257C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x284C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xAE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2858 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x2A7E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH2 0x2B62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2C60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x2D64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBE2 PUSH2 0x2D6A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x2D79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x2D85 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x30C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBE2 PUSH2 0x30CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH2 0x30DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xD1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xD52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x313F SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x3272 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x327B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x336B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xE30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3525 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x35B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x35BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xE93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x35CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3757 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x375D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3ADA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3AE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xF59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3AE6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3B40 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1000 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3CE9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x102A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3D10 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x103F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x3D16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1054 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0x3D24 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1069 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1080 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3D2A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1093 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3E74 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x10D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3ECD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x110D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x4080 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x40D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x114A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x440 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x117B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x118D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x11AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4132 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3DB PUSH2 0x4484 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x404 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x448D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3E SLOAD JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x122B CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1235 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x1279 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH7 0x38D7EA4C68000 GT ISZERO DUP1 ISZERO PUSH2 0x1298 JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 GT ISZERO JUMPDEST PUSH2 0x12DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x6F7574206F662072616E676520746F702D757 PUSH1 0x6C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x12F0 PUSH1 0x40 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x44AC AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x41FF5D5CE3B7935893A4E7269EC5CAAE9CCA5E3BF0EB4B21D2F443489667112E SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1337 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1346 JUMPI POP PUSH2 0x1346 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x1390 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND PUSH2 0x13DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1442 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1438 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x141A JUMPI JUMPDEST POP POP POP POP POP PUSH2 0x3AE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x147F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D59 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x148B PUSH1 0x38 PUSH1 0x0 PUSH2 0x5B9B JUMP JUMPDEST PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x7794EFF834D760583543E6E510E717A5E66D2C064E225F4DB448343C3E66AFCF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x332E342E31 PUSH1 0xD8 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1507 DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x45A9 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1512 DUP2 PUSH2 0x4498 JUMP JUMPDEST PUSH2 0x1557 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x696E76616C6964207369676E6174757265 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1572 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x157C JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x15C0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1609 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x617373657420617272617920697320656D707479 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x166B JUMPI PUSH1 0x0 PUSH2 0x163A DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0x1625 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4697 JUMP JUMPDEST SWAP1 POP PUSH2 0x1662 DUP6 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x164C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x35CD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x160C JUMP JUMPDEST POP PUSH32 0xD4F62F23021706247DCFFEA245D104AE7DDAEC7F23ACF3D11D7136D5DE6A69AD DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FA PUSH1 0x47 PUSH2 0x4728 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 DUP1 MLOAD SWAP2 SWAP1 SWAP4 ADD DUP2 DUP2 SUB PUSH1 0x1F NOT ADD DUP3 MSTORE DUP1 DUP5 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x1F DUP12 ADD DUP4 SWAP1 DIV DUP4 MUL DUP3 ADD DUP4 ADD SWAP1 SWAP5 MSTORE DUP10 DUP2 MSTORE SWAP3 SWAP7 POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP6 POP PUSH2 0x1776 SWAP5 POP DUP7 SWAP4 POP DUP10 SWAP2 POP DUP9 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x14F4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x17C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1CDA59C81B9BDD081D985B1A59 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH4 0x20C13B0B PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x17ED CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x17F7 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x183B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x184C PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x475D AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x4B1B970C8A0FA761E7803ED70C13D7ACA71904B13DF60FBE03F981DA1730DA91 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x18CB JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1911 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x191B JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x195F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1968 DUP3 PUSH2 0x47BE JUMP JUMPDEST PUSH2 0x19AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x746F6B656E206E6F74206C6F616461626C65 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19BA DUP4 DUP4 PUSH2 0x3ECD JUMP JUMPDEST SWAP1 POP PUSH2 0x19CD PUSH1 0x47 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19DA PUSH1 0x4D SLOAD PUSH2 0x484E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x1A82 JUMPI PUSH2 0x1A05 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x496F AND JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1B3C96B4 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A79 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1AFC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1B3C96B4 DUP5 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x5F65674BEC9AF81F71BE68674135A0EA3F163FB91984E3893D06DA9F6EA2CE8A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x1B4F CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1B59 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x1B9D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x46 SLOAD DUP2 GT ISZERO PUSH2 0x1BEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x1BDD5D081BD9881C985B99D9481B1BD85908185B5BDD5B9D PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1C00 PUSH1 0x47 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x44AC AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0xB05243483E17C3F3377AEE82B7D47E5700B48288695FC08B7ECC2759AFA44EF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x1C47 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1C51 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x1C95 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1CA6 PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x44AC AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x68F112E5EC923D412BE64779FE69E0FCBB6784C6617E94CCCC8FD348F2E0F21 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1CEF CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x1CF9 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x1D3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1D6E JUMPI PUSH2 0x1D6E PUSH1 0x3B DUP5 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST PUSH2 0x1D80 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4A87 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D90 JUMPI POP PUSH2 0x1D90 DUP5 PUSH2 0x4A8D JUMP JUMPDEST ISZERO PUSH2 0x1F77 JUMPI PUSH1 0x0 DUP1 PUSH2 0x1DA2 DUP7 DUP6 PUSH2 0x4AA7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0xFF AND PUSH2 0x1DE8 JUMPI PUSH1 0x0 PUSH2 0x1DD3 DUP8 DUP4 PUSH2 0x3525 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DE6 PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST POP JUMPDEST PUSH2 0x1E01 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP6 PUSH4 0xFFFFFFFF PUSH2 0x4BB1 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CODESIZE DUP4 CODECOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x1 PUSH1 0xF8 SHL DUP2 PUSH1 0x1F DUP2 MLOAD DUP2 LT PUSH2 0x1E34 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0xF77753FAB406ECFFF96D6FF2476C64A838FA9F6D37B1BF190F8546E395E3B613 DUP8 DUP8 DUP8 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1ECF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EB7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1EFC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F2F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1F17 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F5C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 POP PUSH2 0x21D4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1FB6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1F97 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2018 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x201D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP2 SWAP1 PUSH2 0x20AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2072 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x205A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x209F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH32 0xF77753FAB406ECFFF96D6FF2476C64A838FA9F6D37B1BF190F8546E395E3B613 DUP7 DUP7 DUP7 DUP5 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2132 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x211A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x215F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2192 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x217A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x21BF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x21E4 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x2223 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 CHAINID SWAP1 POP PUSH1 0x0 PUSH2 0x22A3 DUP3 ADDRESS DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH9 0x36B7B737B634BA341D PUSH1 0xB9 SHL DUP2 MSTORE POP PUSH1 0x9 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE PUSH1 0x14 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x4D6F JUMP JUMPDEST SWAP1 POP PUSH4 0x1626BA7E PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x22F7 DUP3 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x14F4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND EQ PUSH2 0x2343 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x1CDA59C81B9BDD081D985B1A59 PUSH1 0x9A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4C SLOAD DUP8 EQ PUSH2 0x2385 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x7478207265706C6179 PUSH1 0xB8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x238D PUSH2 0x4DC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x40 MLOAD SWAP3 ADD SWAP5 POP PUSH1 0x0 SWAP4 POP SWAP1 SWAP2 POP POP DUP1 DUP4 SUB DUP2 DUP4 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x23ED JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x23F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP2 SWAP1 PUSH2 0x2445 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD SWAP1 SWAP3 DUP4 SWAP3 PUSH1 0x44 SWAP1 SWAP2 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2072 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x205A JUMP JUMPDEST POP PUSH32 0x823DBCF2B7B0F265871963CA65AC033F6B4C71E0D82CD123D2FF23D752DC21C1 DUP9 DUP9 DUP4 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP6 DUP2 SUB DUP5 MSTORE DUP7 MLOAD DUP2 MSTORE DUP7 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP4 SWAP2 DUP9 ADD SWAP3 POP SWAP1 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24D4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x24BC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2501 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x18E9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x18CB JUMPI POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x2585 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x25C4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND PUSH2 0x2613 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2674 PUSH1 0x38 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1438 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x141A JUMPI POP POP POP POP POP PUSH2 0x3AE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x26B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D59 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x38 SLOAD DUP2 LT ISZERO PUSH2 0x2798 JUMPI PUSH1 0x36 PUSH1 0x0 PUSH1 0x38 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x26CF JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2790 JUMPI PUSH1 0x1 PUSH1 0x36 PUSH1 0x0 PUSH1 0x38 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x270E JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x38 DUP1 SLOAD PUSH1 0x37 SWAP2 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x2754 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP4 SLOAD PUSH1 0x1 DUP2 ADD DUP6 SSTORE SWAP4 DUP4 MSTORE SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 ADD PUSH2 0x26B4 JUMP JUMPDEST POP PUSH32 0xB2F6CCCEE7A369E23E293C25AA19BEF80AF11EB26DEBA3EA0F2A02783F752E4A CALLER PUSH1 0x38 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x2824 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2806 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x283F PUSH1 0x38 PUSH1 0x0 PUSH2 0x5B9B JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FA PUSH1 0x3B PUSH2 0x4728 JUMP JUMPDEST PUSH2 0x2861 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x286B JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x28AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x28CA JUMPI POP PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x291B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x77686974656C6973742073756D62697373696F6E2070656E64696E6700000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2974 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x1DDA1A5D195B1A5CDD081B9BDD081A5B9A5D1A585B1A5E9959 PUSH1 0x3A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x29B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x195B5C1D1E481DDA1A5D195B1A5CDD PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x29C4 PUSH1 0x39 DUP4 DUP4 PUSH2 0x5BB9 JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP5 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP4 DUP3 MSTORE PUSH32 0xFBC0E5CA6C7E4858DAF0FDB185EF5186203E74EC9C64737E93C0AEAEC596E1D1 SWAP3 DUP6 SWAP3 DUP6 SWAP3 PUSH2 0x2A33 SWAP3 DUP6 SWAP2 DUP6 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3AE6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x2A97 JUMPI POP PUSH2 0x2A97 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x2AA5 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x2AE0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x2B0B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH2 0x2B14 DUP7 PUSH2 0x4E0E JUMP JUMPDEST PUSH2 0x2B1D DUP5 PUSH2 0x4EDC JUMP JUMPDEST PUSH2 0x2B27 DUP9 DUP9 PUSH2 0x4F89 JUMP JUMPDEST PUSH2 0x2B30 DUP3 PUSH2 0x50E8 JUMP JUMPDEST PUSH2 0x2B38 PUSH2 0x51D3 JUMP JUMPDEST PUSH2 0x2B41 DUP6 PUSH2 0x52C4 JUMP JUMPDEST PUSH1 0x4D DUP4 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2B58 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2B6B CALLER PUSH2 0x4498 JUMP JUMPDEST PUSH2 0x2BB5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2C13 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x2C69 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x2C73 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x2CB7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH7 0x38D7EA4C68000 GT ISZERO DUP1 ISZERO PUSH2 0x2CD6 JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 GT ISZERO JUMPDEST PUSH2 0x2D1D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x6F7574206F662072616E676520746F702D757 PUSH1 0x6C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2D2E PUSH1 0x40 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x475D AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xAF2A77CD04C3CC155588DD3BF67B310AB4FB3B1DA3CF6B8D7D4D2AA1D09B794C SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x4D SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16FA PUSH1 0x40 PUSH2 0x4728 JUMP JUMPDEST PUSH2 0x2D8E CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x2D98 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x2DDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x2DF7 JUMPI POP PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x2E48 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x77686974656C6973742073756D62697373696F6E2070656E64696E6700000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP3 POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2F64 JUMPI PUSH2 0x2EA1 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E94 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4498 JUMP JUMPDEST ISZERO PUSH2 0x2EEC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x636F6E7461696E73206F776E65722061646472657373 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F03 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2F5C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x636F6E7461696E7320302061646472657373 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x2E7C JUMP JUMPDEST POP PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2FBE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x1DDA1A5D195B1A5CDD081B9BDD081A5B9A5D1A585B1A5E9959 PUSH1 0x3A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x3002 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x195B5C1D1E481DDA1A5D195B1A5CDD PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x300E PUSH1 0x38 DUP5 DUP5 PUSH2 0x5BB9 JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP6 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP5 DUP3 MSTORE PUSH32 0x9C80B3B5F68B3E017766D59E8D09B34EFE6462B05C398F35CAB9E271D9BC3B9C SWAP3 DUP7 SWAP3 DUP7 SWAP3 PUSH2 0x307B SWAP3 DUP6 SWAP2 DUP6 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3AE6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP6 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP7 POP SWAP1 SWAP5 POP POP POP POP POP LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x45 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x30E5 CALLER PUSH2 0x4498 JUMP JUMPDEST PUSH2 0x312F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3137 PUSH2 0x4DC0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x3B SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3148 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x3152 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x3196 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 DUP1 DUP1 PUSH1 0x60 JUMPDEST DUP7 DUP6 LT ISZERO PUSH2 0x2B58 JUMPI PUSH2 0x31BF DUP7 PUSH1 0x54 PUSH4 0xFFFFFFFF PUSH2 0x5416 AND JUMP JUMPDEST DUP9 DUP7 ADD DUP1 MLOAD PUSH1 0x14 DUP3 ADD MLOAD PUSH1 0x34 SWAP1 SWAP3 ADD DUP1 MLOAD SWAP4 SWAP10 POP PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHR SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x3204 PUSH1 0x54 PUSH2 0x31F8 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x5473 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5473 AND JUMP JUMPDEST SWAP5 POP DUP7 DUP6 GT ISZERO PUSH2 0x324B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x6F7574206F6620626F756E6473 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x3261 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE JUMPDEST PUSH2 0x326C DUP5 DUP5 DUP4 PUSH2 0x1CE4 JUMP JUMPDEST POP PUSH2 0x31A6 JUMP JUMPDEST PUSH1 0x4B SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x3284 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x328E JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x32D2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x46 SLOAD DUP2 GT ISZERO PUSH2 0x3324 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x1BDD5D081BD9881C985B99D9481B1BD85908185B5BDD5B9D PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3335 PUSH1 0x47 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x475D AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xC178D379965E5657B6FC57494E392F121A14119215DFB422AAD7DB4CC03F2D10 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x3374 CALLER PUSH2 0x4498 JUMP JUMPDEST PUSH2 0x33BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x39B2B73232B91034B9903737BA1030B71037BBB732B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x341C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6F776E657273686970206973206E6F74207472616E7366657261626C65000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3461 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D0C PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE DUP1 PUSH2 0x34BA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x3534 DUP7 PUSH2 0x54CD JUMP JUMPDEST POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP POP DUP1 ISZERO PUSH2 0x35A9 JUMPI DUP2 PUSH2 0x357F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x726174653D3 PUSH1 0xD4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x359F DUP4 PUSH2 0x3593 DUP8 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x565F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x56B8 AND JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x1563 JUMP JUMPDEST POP PUSH1 0x0 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3F SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x35D6 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x35E0 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x3624 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP1 PUSH2 0x3661 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x76616C75653D3 PUSH1 0xCC SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x36AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x64657374696E6174696F6E3D3 PUSH1 0x9C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x36 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x36FC JUMPI DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x36E9 JUMPI PUSH2 0x36E6 DUP5 DUP5 PUSH2 0x3525 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x36FA PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST POP JUMPDEST PUSH2 0x3707 DUP5 DUP5 DUP5 PUSH2 0x5722 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH32 0xD1BA4AC2E2A11B5101F6CB4D978F514A155B421E8EC396D2D9ABAF0BB02917EE SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x4A SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x3766 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x37A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x37F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x385A PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1438 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x141A JUMPI POP POP POP POP POP PUSH2 0x3AE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x3897 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D59 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x39 SLOAD DUP2 LT ISZERO PUSH2 0x3A25 JUMPI PUSH1 0x36 PUSH1 0x0 PUSH1 0x39 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x38B5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x3A1D JUMPI PUSH1 0x0 PUSH1 0x36 PUSH1 0x0 PUSH1 0x39 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x38F5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE JUMPDEST PUSH1 0x37 SLOAD PUSH2 0x393F SWAP1 PUSH1 0x1 PUSH4 0xFFFFFFFF PUSH2 0x5416 AND JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x3A07 JUMPI PUSH1 0x39 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3953 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x3979 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x39FF JUMPI PUSH1 0x37 DUP1 SLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x39A6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x37 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 DUP4 SWAP1 DUP2 LT PUSH2 0x39CC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH2 0x3A07 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x392B JUMP JUMPDEST POP PUSH1 0x37 DUP1 SLOAD SWAP1 PUSH2 0x3A1B SWAP1 PUSH1 0x0 NOT DUP4 ADD PUSH2 0x5C1C JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x389A JUMP JUMPDEST POP PUSH32 0xD218C430FA348F4CE67791021B6B89C0C3EACD4EAD1D8F5B83C60038EC28249B CALLER PUSH1 0x39 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD DUP1 ISZERO PUSH2 0x3AB1 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3A93 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x3ACC PUSH1 0x39 PUSH1 0x0 PUSH2 0x5B9B JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x43 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4C SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B19 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B01 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B49 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x3B58 JUMPI POP PUSH2 0x3B58 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x3BA2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3BF6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x3737903832B73234B7339039BAB136B4B9B9B4B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3C57 PUSH1 0x39 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1438 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x141A JUMPI POP POP POP POP POP PUSH2 0x3AE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x3C94 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D59 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3CA0 PUSH1 0x39 PUSH1 0x0 PUSH2 0x5B9B JUMP JUMPDEST PUSH1 0x3A DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH32 0x13C935EB475AA0F6E931FECE83E2AC44569CE2D53460D29A6DEDAB40B965C8A3 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x37 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3CF6 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x47 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3A SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x34 SLOAD SWAP1 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x3D67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x76616C75653D3 PUSH1 0xCC SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3D70 CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x3D7F JUMPI POP PUSH2 0x3D7F CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x3DC9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x37B7363C9037BBB732B93E3E31B7B73A3937B63632B9 PUSH1 0x51 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3DDA PUSH1 0x40 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x47D8 AND JUMP JUMPDEST PUSH2 0x3DE2 PUSH2 0x30CD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8FC DUP4 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3E1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0x611B7C0D84FDA988026215BEF9B3E4D81CBCECED7E679BE6D5E044B588467C0E CALLER PUSH2 0x3E45 PUSH2 0x30CD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE DUP1 DUP3 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH2 0x3E7D CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x3EBC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1CA6 PUSH1 0x3B DUP3 PUSH4 0xFFFFFFFF PUSH2 0x57EC AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ED7 PUSH2 0x583C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3EF7 JUMPI POP DUP1 PUSH2 0x1563 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x3FBC JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3F15 DUP8 PUSH2 0x54CD JUMP JUMPDEST POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP POP DUP1 PUSH2 0x3F67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x746F6B656E206E6F7420617661696C61626C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x3FA2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x726174653D3 PUSH1 0xD4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3FB6 DUP4 PUSH2 0x3593 DUP9 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x565F AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3FC9 PUSH2 0x58B2 JUMP JUMPDEST POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP POP DUP1 PUSH2 0x401B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x746F6B656E206E6F7420617661696C61626C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x4061 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x737461626C65636F696E20726174653D3 PUSH1 0x7C SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4075 DUP3 PUSH2 0x3593 DUP7 DUP7 PUSH4 0xFFFFFFFF PUSH2 0x565F AND JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4089 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x40C8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1C00 PUSH1 0x47 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x57EC AND JUMP JUMPDEST PUSH2 0x40E2 CALLER PUSH2 0x4515 JUMP JUMPDEST PUSH2 0x4121 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5C9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x12F0 PUSH1 0x40 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x57EC AND JUMP JUMPDEST PUSH2 0x413B CALLER PUSH2 0x4498 JUMP JUMPDEST DUP1 PUSH2 0x4145 JUMPI POP CALLER ADDRESS EQ JUMPDEST PUSH2 0x4189 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x37B7363C9037BBB732B93E3E39B2B633 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP2 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP3 POP POP POP JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x4298 JUMPI PUSH2 0x41D5 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E94 JUMPI INVALID JUMPDEST ISZERO PUSH2 0x4220 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x636F6E7461696E73206F776E65722061646472657373 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4237 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x4290 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x636F6E7461696E7320302061646472657373 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x41BD JUMP JUMPDEST POP PUSH1 0x3A SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x42EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1DDA1A5D195B1A5CDD081A5B9A5D1A585B1A5E9959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x43E0 JUMPI PUSH1 0x36 PUSH1 0x0 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0x430A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x43D8 JUMPI PUSH1 0x1 PUSH1 0x36 PUSH1 0x0 DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x4346 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x37 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x439B JUMPI INVALID JUMPDEST DUP4 SLOAD PUSH1 0x1 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP5 DUP6 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP3 MUL SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x42F2 JUMP JUMPDEST POP PUSH1 0x3A DUP1 SLOAD PUSH3 0xFF0000 NOT AND PUSH3 0x10000 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP4 DUP2 MSTORE PUSH1 0x37 DUP1 SLOAD SWAP5 DUP5 ADD DUP6 SWAP1 MSTORE PUSH32 0xB2F6CCCEE7A369E23E293C25AA19BEF80AF11EB26DEBA3EA0F2A02783F752E4A SWAP5 SWAP3 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0x60 DUP4 ADD SWAP1 DUP5 SWAP1 DUP1 ISZERO PUSH2 0x4470 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4452 JUMPI JUMPDEST POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x44 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1563 DUP3 PUSH2 0x4697 JUMP JUMPDEST PUSH1 0x35 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x44FA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x1B1A5B5A5D08185B1C9958591E481CD95D PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x4504 DUP3 DUP3 PUSH2 0x5A21 JUMP JUMPDEST POP PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4522 PUSH1 0x34 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB429AFEB DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x458B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x41 EQ PUSH2 0x45BC JUMPI POP PUSH1 0x0 PUSH2 0x1563 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x0 BYTE PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP3 GT ISZERO PUSH2 0x4602 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x1563 JUMP JUMPDEST DUP1 PUSH1 0xFF AND PUSH1 0x1B EQ ISZERO DUP1 ISZERO PUSH2 0x461A JUMPI POP DUP1 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x462B JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x1563 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 DUP5 MSTORE DUP10 SWAP1 MSTORE PUSH1 0xFF DUP5 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP6 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x1 SWAP3 PUSH1 0xA0 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4682 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x4721 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x46EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4702 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1216 JUMP JUMPDEST POP SELFBALANCE PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x0 SWAP1 PUSH2 0x4743 SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x5473 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x4752 JUMPI POP DUP1 SLOAD PUSH2 0x1216 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0xFF AND PUSH2 0x47B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6C696D6974206861736E2774206265656E207365742079657400000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x47CA DUP4 PUSH2 0x54CD JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x47E1 DUP3 PUSH2 0x5A44 JUMP JUMPDEST DUP1 DUP3 PUSH1 0x1 ADD SLOAD LT ISZERO PUSH2 0x482D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x185D985A5B18589B194F185B5BDD5B9D PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD PUSH2 0x4842 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x5416 AND JUMP JUMPDEST DUP3 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x48AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E535265736F6C7661626C65206E6F7420696E697469616C697A6564000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x33 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x178B8BF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x178B8BF SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x48FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x490E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4924 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x1D9DABEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x3B3B57DE SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x49F5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP6 AND SWAP2 PUSH4 0xDD62ED3E SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x49C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ISZERO JUMPDEST PUSH2 0x4A30 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D7C PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x4A82 SWAP1 DUP5 SWAP1 PUSH2 0x4BB1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4A99 DUP4 PUSH2 0x54CD JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4AB5 PUSH1 0x45 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAFC72E93 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4B29 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B11 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4B56 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4B87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4B9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4BC3 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4A87 JUMP JUMPDEST PUSH2 0x4C14 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A2063616C6C20746F206E6F6E2D636F6E747261637400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4C52 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4C33 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4CB4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4CB9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4D10 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4D69 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x4D69 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5D2F PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3C DUP1 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH1 0x5C SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x4C DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD PUSH32 0xAB0423A75986556234AECD171C46CE7F5E45607D8070BF5230F2735B50322BFF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMP JUMPDEST ADDRESS EXTCODESIZE ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x4E27 JUMPI POP PUSH2 0x4E27 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x4E35 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x4E70 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x4E9B JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO PUSH2 0x4EC6 JUMPI PUSH1 0x33 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND OR SWAP1 SSTORE JUMPDEST DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x4EF5 JUMPI POP PUSH2 0x4EF5 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x4F03 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x4F3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x4F69 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO PUSH2 0x4EC6 JUMPI PUSH1 0x34 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x4FA2 JUMPI POP PUSH2 0x4FA2 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x4FB0 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x4FEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5016 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x35 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP5 ISZERO ISZERO DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0xFF SWAP2 DIV AND PUSH2 0x508E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0x808639FF9C8E4732D60B6C2330DE498035416D229F27A77D259680895EFEC122 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x850B3DF64837D7D518B45F5AA64D104652C3B80EB5B34A8E3D9EB666CB7CDEA5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 DUP1 ISZERO PUSH2 0x4A82 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x5101 JUMPI POP PUSH2 0x5101 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x510F JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x514A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5175 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE TIMESTAMP SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD DUP2 SWAP1 MSTORE PUSH1 0x3B DUP5 SWAP1 SSTORE PUSH1 0x3C DUP5 SWAP1 SSTORE PUSH1 0x3D SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3E SSTORE PUSH1 0x3F DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x51EC JUMPI POP PUSH2 0x51EC PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x51FA JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x5235 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5260 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH8 0x6F05B59D3B20000 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE TIMESTAMP DUP3 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP4 ADD DUP4 SWAP1 MSTORE SWAP3 DUP2 SWAP1 SSTORE PUSH1 0x41 SSTORE PUSH1 0x42 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x43 SSTORE PUSH1 0x44 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP1 ISZERO PUSH2 0x52C1 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x52DD JUMPI POP PUSH2 0x52DD PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x52EB JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x5326 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5351 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST PUSH2 0x535A DUP3 PUSH2 0x5A9C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5364 PUSH2 0x58B2 JUMP JUMPDEST POP POP POP POP POP SWAP2 POP POP PUSH1 0x0 DUP2 GT PUSH2 0x53B1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x37379039BA30B13632B1B7B4B7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2710 MUL PUSH1 0x46 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE TIMESTAMP SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD DUP2 SWAP1 MSTORE PUSH1 0x47 DUP4 SWAP1 SSTORE PUSH1 0x48 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x49 SSTORE PUSH1 0x4A SSTORE PUSH1 0x4B DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x546D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x21D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x54E3 PUSH1 0x45 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1F69565F DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x554C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x5594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x55A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x55C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x55EF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x55D7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x561C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP6 ADD MLOAD SWAP8 SWAP15 POP SWAP3 SWAP13 POP SWAP1 SWAP11 POP SWAP9 POP SWAP7 POP SWAP5 POP SWAP2 SWAP3 POP POP POP SWAP2 SWAP4 SWAP6 SWAP8 SWAP1 SWAP3 SWAP5 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x566E JUMPI POP PUSH1 0x0 PUSH2 0x1563 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x567B JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x21D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CBD PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x570E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x5719 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x57D2 JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 DUP4 SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x577B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5780 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x57CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x1CD85999551C985B9CD9995C8819985A5B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x4A82 JUMP JUMPDEST PUSH2 0x4A82 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP5 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x5B49 AND JUMP JUMPDEST DUP1 DUP3 PUSH1 0x3 ADD SLOAD EQ PUSH2 0x582E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5C7B PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4ED8 DUP3 DUP4 PUSH1 0x3 ADD SLOAD PUSH2 0x5A21 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5849 PUSH1 0x45 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE9CBD822 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5881 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5895 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x58AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x58C8 PUSH1 0x45 SLOAD PUSH2 0x484E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3EFEC5E9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x593D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x595C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x598A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x59B7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x599F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x59E4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 ADD MLOAD SWAP1 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0xC0 SWAP1 SWAP6 ADD MLOAD SWAP8 SWAP16 SWAP4 SWAP15 POP SWAP2 SWAP13 POP SWAP11 POP SWAP9 POP SWAP1 SWAP7 POP SWAP3 SWAP5 POP SWAP2 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x5A2A DUP3 PUSH2 0x5A44 JUMP JUMPDEST DUP1 DUP3 SSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP2 LT ISZERO PUSH2 0x4ED8 JUMPI DUP2 SLOAD PUSH1 0x1 DUP4 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH2 0x5A5C SWAP1 PUSH3 0x15180 PUSH4 0xFFFFFFFF PUSH2 0x5473 AND JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x52C1 JUMPI TIMESTAMP PUSH1 0x2 DUP3 ADD SSTORE DUP1 SLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xE93BC25276D408D390778E7A8B926F2F67209C43ED540081B951FE128F0D3CD2 SWAP1 PUSH1 0x0 SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x5AB5 JUMPI POP PUSH2 0x5AB5 PUSH2 0x4E08 JUMP JUMPDEST DUP1 PUSH2 0x5AC3 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO JUMPDEST PUSH2 0x5AFE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5CDE PUSH1 0x2E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x5B29 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT PUSH2 0xFF00 NOT SWAP1 SWAP2 AND PUSH2 0x100 OR AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO PUSH2 0x4EC6 JUMPI PUSH1 0x45 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x4ED8 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0x4A82 SWAP1 DUP5 SWAP1 PUSH2 0x4BB1 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x52C1 SWAP2 SWAP1 PUSH2 0x5C3C JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x5C0C JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x5C0C JUMPI DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 CALLDATALOAD AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x5BD9 JUMP JUMPDEST POP PUSH2 0x5C18 SWAP3 SWAP2 POP PUSH2 0x5C56 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 SLOAD DUP2 DUP4 SSTORE DUP2 DUP2 GT ISZERO PUSH2 0x4A82 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH2 0x4A82 SWAP2 DUP2 ADD SWAP1 DUP4 ADD JUMPDEST PUSH2 0x121F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5C18 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C42 JUMP JUMPDEST PUSH2 0x121F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x5C18 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5C5C JUMP INVALID PUSH4 0x6F6E6669 PUSH19 0x6D65642F7375626D6974746564206C696D6974 KECCAK256 PUSH14 0x69736D6174636873656E64657220 PUSH10 0x73206E6F74206120636F PUSH15 0x74726F6C6C65720000000000005361 PUSH7 0x654D6174683A20 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77436F6E747261637420 PUSH10 0x6E7374616E6365206861 PUSH20 0x20616C7265616479206265656E20696E69746961 PUSH13 0x697A65646F776E65722063616E PUSH15 0x6F742062652073657420746F207A65 PUSH19 0x6F20616464726573735361666545524332303A KECCAK256 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS KECCAK256 PUSH16 0x7065726174696F6E20646964206E6F74 KECCAK256 PUSH20 0x7563636565646E6F6E2D6D61746368696E672070 PUSH6 0x6E64696E6720 PUSH24 0x686974656C69737420686173685361666545524332303A20 PUSH2 0x7070 PUSH19 0x6F76652066726F6D206E6F6E2D7A65726F2074 PUSH16 0x206E6F6E2D7A65726F20616C6C6F7761 PUSH15 0x6365A265627A7A723158200650F450 0xC2 0xD8 0xF8 0xFC PUSH22 0x477F70E683F64B5CC64733A3582CE80A54555FD95DD9 SUB PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "22334:17725:31:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30394:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30394:137:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30394:137:31;-1:-1:-1;;;;;;30394:137:31;;:::i;:::-;;;;;;;;;;;;;;;;;;16037:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16037:104:31;;;:::i;:::-;;;;;;;;;;;;;;;;18648:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18648:286:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18648:286:31;;:::i;:::-;;3935:677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3935:677:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3935:677:31;;:::i;23198:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23198:47:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23198:47:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38439:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38439:244:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38439:244:31;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;38439:244:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;38439:244:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;38439:244:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;38439:244:31;;-1:-1:-1;38439:244:31;;-1:-1:-1;;;;;38439:244:31:i;:::-;;;;-1:-1:-1;;;;;;38439:244:31;;;;;;;;;;;;;;25617:550;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25617:550:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;25617:550:31;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25617:550:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25617:550:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25617:550:31;;-1:-1:-1;25617:550:31;-1:-1:-1;25617:550:31;:::i;21121:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21121:117:31;;;:::i;28592:344::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28592:344:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28592:344:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28592:344:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28592:344:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28592:344:31;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28592:344:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28592:344:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28592:344:31;;-1:-1:-1;28592:344:31;-1:-1:-1;28592:344:31;:::i;2749:94:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2749:94:26;;;:::i;16644:179:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16644:179:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16644:179:31;;:::i;18434:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18434:106:31;;;:::i;3121:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3121:38:31;;;:::i;8339:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8339:124:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8339:124:31;;;;;;;;;;;;;;;;;2937:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2937:44:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2937:44:31;-1:-1:-1;;;;;2937:44:31;;:::i;29386:943::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;29386:943:31;;;;;;;;:::i;20234:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20234:233:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20234:233:31;;:::i;15655:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15655:161:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15655:161:31;;:::i;36222:1934::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36222:1934:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;36222:1934:31;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;36222:1934:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;36222:1934:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;36222:1934:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;36222:1934:31;;-1:-1:-1;36222:1934:31;;-1:-1:-1;;;;;36222:1934:31:i;26519:1111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26519:1111:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26519:1111:31;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26519:1111:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26519:1111:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26519:1111:31;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26519:1111:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26519:1111:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26519:1111:31;;-1:-1:-1;26519:1111:31;-1:-1:-1;26519:1111:31;:::i;8160:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8160:126:31;;;:::i;5562:1117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5562:1117:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5562:1117:31;;:::i;15861:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15861:119:31;;;:::i;10379:673::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10379:673:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10379:673:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10379:673:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10379:673:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10379:673:31;;-1:-1:-1;10379:673:31;-1:-1:-1;10379:673:31;:::i;24535:594::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24535:594:31;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;24535:594:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3119:306:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3119:306:26;;;:::i;19061:304:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19061:304:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19061:304:31;;:::i;28999:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28999:91:31;;;:::i;1695:89:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1695:89:25;;;:::i;:::-;;;;-1:-1:-1;;;;;1695:89:25;;;;;;;;;;;;;;17856:125:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17856:125:31;;;:::i;9544:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9544:711:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9544:711:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9544:711:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9544:711:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9544:711:31;;-1:-1:-1;9544:711:31;-1:-1:-1;9544:711:31;:::i;1496:105:27:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1496:105:27;;;:::i;3508:85:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3508:85:26;;;:::i;28006:87:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28006:87:31;;;:::i;16400:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16400:100:31;;;:::i;31468:2016::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31468:2016:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31468:2016:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31468:2016:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31468:2016:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31468:2016:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31468:2016:31;;-1:-1:-1;31468:2016:31;;-1:-1:-1;;;;;31468:2016:31:i;21451:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21451:145:31;;;:::i;20582:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20582:251:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20582:251:31;;:::i;1823:809:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1823:809:26;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1823:809:26;;;;;;;;;;:::i;33671:550:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33671:550:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33671:550:31;;;;;;;;:::i;16197:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16197:147:31;;;:::i;3208:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3208:26:31;;;:::i;38960:1097::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38960:1097:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38960:1097:31;;;;;;;;;;;;;;;;;:::i;21294:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21294:102:31;;;:::i;6748:1358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6748:1358:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6748:1358:31;;:::i;18043:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18043:110:31;;;:::i;23812:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23812:25:31;;;:::i;11121:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11121:145:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11121:145:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11121:145:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11121:145:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11121:145:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11121:145:31;;-1:-1:-1;11121:145:31;;-1:-1:-1;;;;;11121:145:31:i;4680:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4680:659:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4680:659:31;;:::i;2987:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2987:31:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2987:31:31;;:::i;21663:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21663:98:31;;;:::i;3165:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3165:37:31;;;:::i;1778:95:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1778:95:24;;;:::i;30711:425:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30711:425:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30711:425:31;;:::i;15318:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15318:180:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15318:180:31;;:::i;34422:1540::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34422:1540:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34422:1540:31;;;;;;;;:::i;20894:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20894:177:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20894:177:31;;:::i;17611:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17611:189:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17611:189:31;;:::i;8594:827::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8594:827:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8594:827:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8594:827:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8594:827:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8594:827:31;;-1:-1:-1;8594:827:31;-1:-1:-1;8594:827:31;:::i;18214:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18214:153:31;;;:::i;27789:108::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27789:108:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27789:108:31;-1:-1:-1;;;;;27789:108:31;;:::i;30394:137::-;-1:-1:-1;;;;;;30488:36:31;;-1:-1:-1;;;30488:36:31;30394:137;;;;:::o;16037:104::-;16115:19;;16037:104;;:::o;18648:286::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;18762:7;17419:8;18734:35;;:74;;;;;17351:10;18773:7;:35;;18734:74;18726:106;;;;;-1:-1:-1;;;18726:106:31;;;;;;;;;;;;-1:-1:-1;;;18726:106:31;;;;;;;;;;;;;;;18842:33;:14;18867:7;18842:33;:24;:33;:::i;:::-;18890:37;;;18907:10;18890:37;;;;;;;;;;;;;;;;;;;;;18648:286;:::o;3935:677::-;1608:20;1617:10;1608:8;:20::i;:::-;:49;;;;1632:25;1646:10;1632:13;:25::i;:::-;1600:84;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;;;;4082:26;;;;4074:60;;;;;-1:-1:-1;;;4074:60:31;;;;;;;;;;;;-1:-1:-1;;;4074:60:31;;;;;;;;;;;;;;;4256:40;4270:25;4256:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4256:40:31;;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4247:5;:49;4239:97;;;;-1:-1:-1;;;4239:97:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4382:32;4389:25;;4382:32;:::i;:::-;4471:26;:34;;-1:-1:-1;;4471:34:31;;;4560:45;;;4587:10;4560:45;;;;;;;;;;;;;;;;;;;;;3935:677;:::o;23198:47::-;;;;;;;;;;;;;;-1:-1:-1;;;23198:47:31;;;;:::o;38439:244::-;38532:6;;38565:31;:11;38585:10;38565:31;:19;:31;:::i;:::-;38550:46;;38614:14;38623:4;38614:8;:14::i;:::-;38606:44;;;;;-1:-1:-1;;;38606:44:31;;;;;;;;;;;;-1:-1:-1;;;38606:44:31;;;;;;;;;;;;;;;-1:-1:-1;;;;38667:9:31;-1:-1:-1;38439:244:31;;;;;:::o;25617:550::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;25786:19;25778:52;;;;;-1:-1:-1;;;25778:52:31;;;;;;;;;;;;-1:-1:-1;;;25778:52:31;;;;;;;;;;;;;;;25907:9;25902:214;25922:18;;;25902:214;;;25961:14;25978:20;25987:7;;25995:1;25987:10;;;;;;;;;;;;;-1:-1:-1;;;;;25987:10:31;25978:8;:20::i;:::-;25961:37;;26072:33;26081:3;26086:7;;26094:1;26086:10;;;;;;;;;;;;;-1:-1:-1;;;;;26086:10:31;26098:6;26072:8;:33::i;:::-;-1:-1:-1;25942:3:31;;25902:214;;;;26131:29;26147:3;26152:7;;26131:29;;;;-1:-1:-1;;;;;26131:29:31;-1:-1:-1;;;;;26131:29:31;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;26131:29:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;26131:29:31;;;;-1:-1:-1;26131:29:31;;-1:-1:-1;;;;;26131:29:31;25617:550;;;:::o;21121:117::-;21174:7;21200:31;:10;:29;:31::i;:::-;21193:38;;21121:117;:::o;28592:344::-;28690:6;28708:16;28754:5;;28737:23;;;;;;;30:3:-1;22:6;14;1:33;28737:23:31;;;45:16:-1;;;;26:21;;;-1:-1;;22:32;6:49;;28737:23:31;;;28727:34;;49:4:-1;28727:34:31;;;;28834:38;;;;;;;;;;;;;;;;;;28727:34;;-1:-1:-1;;;;28876:9:31;-1:-1:-1;28834:38:31;;-1:-1:-1;28727:34:31;;-1:-1:-1;28861:10:31;;-1:-1:-1;28834:38:31;;;;;;28861:10;28834:38;;28861:10;28834:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;28834:16:31;;-1:-1:-1;;;28834:38:31:i;:::-;-1:-1:-1;;;;;;28834:51:31;;28826:77;;;;;-1:-1:-1;;;28826:77:31;;;;;;;;;;;;-1:-1:-1;;;28826:77:31;;;;;;;;;;;;;;;-1:-1:-1;;;;28920:9:31;28592:344;-1:-1:-1;;;;;28592:344:31:o;2749:94:26:-;2821:15;;-1:-1:-1;;;2821:15:26;;;;;2749:94::o;16644:179:31:-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;16728:39;:11;16759:7;16728:39;:30;:39;:::i;:::-;16782:34;;;;;;;;;;;;;;;;;16644:179;:::o;18434:106::-;18513:14;:20;18434:106;:::o;3121:38::-;;;;;;:::o;8339:124::-;8397:16;8432:24;8425:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8425:31:31;;;;;;;;;;;;;;;;;;;;;;;8339:124;:::o;2937:44::-;;;;;;;;;;;;;;;:::o;29386:943::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;29562:24;29579:6;29562:16;:24::i;:::-;29554:55;;;;;-1:-1:-1;;;29554:55:31;;;;;;;;;;;;-1:-1:-1;;;29554:55:31;;;;;;;;;;;;;;;29672:23;29698:36;29718:6;29726:7;29698:19;:36::i;:::-;29672:62;-1:-1:-1;29864:41:31;:10;29672:62;29864:41;:24;:41;:::i;:::-;29962:22;29987:25;29999:12;;29987:11;:25::i;:::-;29962:50;-1:-1:-1;;;;;;30026:20:31;;;30022:253;;30062:50;-1:-1:-1;;;;;30062:25:31;;30088:14;30104:7;30062:50;:25;:50;:::i;:::-;30135:14;-1:-1:-1;;;;;30126:29:31;;30156:6;30164:7;30126:46;;;;;;;;;;;;;-1:-1:-1;;;;;30126:46:31;-1:-1:-1;;;;;30126:46:31;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30126:46:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30126:46:31;;;;30022:253;;;30212:14;-1:-1:-1;;;;;30203:29:31;;30239:7;30248:6;30256:7;30203:61;;;;;;;;;;;;;-1:-1:-1;;;;;30203:61:31;-1:-1:-1;;;;;30203:61:31;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30203:61:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30203:61:31;;;;;30022:253;30290:32;;;-1:-1:-1;;;;;30290:32:31;;;;;;;;;;;;;;;;;;;;;;;2168:1;;29386:943;;:::o;20234:233::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;20327:17;;20316:7;:28;;20308:65;;;;;-1:-1:-1;;;20308:65:31;;;;;;;;;;;;-1:-1:-1;;;20308:65:31;;;;;;;;;;;;;;;20383:29;:10;20404:7;20383:29;:20;:29;:::i;:::-;20427:33;;;20440:10;20427:33;;;;;;;;;;;;;;;;;;;;;20234:233;:::o;15655:161::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;15730:30;:11;15752:7;15730:30;:21;:30;:::i;:::-;15775:34;;;15789:10;15775:34;;;;;;;;;;;;;;;;;;;;;15655:161;:::o;36222:1934::-;36340:12;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;36559:26:31;;;;;;:12;:26;;;;;;;;36554:91;;36601:33;:11;36627:6;36601:33;:25;:33;:::i;:::-;36746:34;36754:12;-1:-1:-1;;;;;36746:32:31;;:34::i;:::-;:69;;;;;36784:31;36802:12;36784:17;:31::i;:::-;36742:1098;;;36918:10;36942:14;36985:48;37013:12;37027:5;36985:27;:48::i;:::-;-1:-1:-1;;;;;37052:16:31;;;;;;:12;:16;;;;;;36970:63;;-1:-1:-1;36970:63:31;-1:-1:-1;37052:16:31;;37047:335;;37255:18;37276:36;37291:12;37305:6;37276:14;:36::i;:::-;37255:57;-1:-1:-1;37330:37:31;:11;37255:57;37330:37;:25;:37;:::i;:::-;37047:335;;37531:45;-1:-1:-1;;;;;37531:38:31;;37570:5;37531:45;:38;:45;:::i;:::-;37697:13;;;37707:2;37697:13;;;;;;;;;37680:14;;37697:13;;;21:6:-1;;104:10;37697:13:31;87:34:-1;135:17;;-1:-1;37697:13:31;37680:30;;37732:4;37724:12;;:1;37726:2;37724:5;;;;;;;;;;;:12;-1:-1:-1;;;;;37724:12:31;;;;;;;;;37756:51;37776:12;37790:6;37798:5;37805:1;37756:51;;;;-1:-1:-1;;;;;37756:51:31;-1:-1:-1;;;;;37756:51:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37756:51:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37756:51:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37756:51:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37828:1;-1:-1:-1;37821:8:31;;-1:-1:-1;;37821:8:31;36742:1098;37851:12;37865:23;37892:12;-1:-1:-1;;;;;37892:17:31;37916:6;37924:5;37892:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;37892:38:31;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;37850:80:31;;;;37948:7;37964:10;37940:36;;;;;-1:-1:-1;;;37940:36:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37940:36:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37992:60;38012:12;38026:6;38034:5;38041:10;37992:60;;;;-1:-1:-1;;;;;37992:60:31;-1:-1:-1;;;;;37992:60:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37992:60:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37992:60:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37992:60:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38139:10;-1:-1:-1;;2168:1:31;36222:1934;;;;;:::o;26519:1111::-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1471:64:24;;;;;;;;;;;;;;;26823:10:31;26872:9;26866:15;;26951:16;26970:99;27010:2;27022:4;27029:6;27037:5;;26980:63;;;;;;-1:-1:-1;;;26980:63:31;;;;;;;;;;;-1:-1:-1;;;;;26980:63:31;-1:-1:-1;;;;;26980:63:31;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;26980:63:31;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26980:63:31;;;26970:74;;;;;;:97;:99::i;:::-;26951:118;;23576:10;27187:9;;-1:-1:-1;;;;;27145:51:31;;:38;27162:8;27172:10;;27145:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;27145:16:31;;-1:-1:-1;;;27145:38:31:i;:::-;-1:-1:-1;;;;;;27145:51:31;;27137:77;;;;;-1:-1:-1;;;27137:77:31;;;;;;;;;;;;-1:-1:-1;;;27137:77:31;;;;;;;;;;;;;;;27327:10;;27317:6;:20;27309:42;;;;;-1:-1:-1;;;27309:42:31;;;;;;;;;;;;-1:-1:-1;;;27309:42:31;;;;;;;;;;;;;;;27361:21;:19;:21::i;:::-;27450:12;27464:23;27499:4;-1:-1:-1;;;;;27491:18:31;27510:5;;27491:25;;;;;30:3:-1;22:6;14;1:33;27491:25:31;;45:16:-1;;;-1:-1;27491:25:31;;-1:-1:-1;27491:25:31;;-1:-1:-1;;27491:25:31;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27449:67:31;;;;27534:7;27550:10;27526:36;;;;;-1:-1:-1;;;27526:36:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;27526:36:31;;27578:45;27605:5;;27612:10;27578:45;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;;;137:4;117:14;;;-1:-1;;113:30;157:16;;;27578:45:31;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27578:45:31;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27578:45:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1545:1:24;;;;26519:1111:31;;;;;:::o;8160:126::-;8219:16;8254:25;8247:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8247:32:31;;;;;;;;;;;;;;;;;;;;;;8160:126;:::o;5562:1117::-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1471:64:24;;;;;;;;;;;;;;;5720:26:31;;;;5712:60;;;;;-1:-1:-1;;;5712:60:31;;;;;;;;;;;;-1:-1:-1;;;5712:60:31;;;;;;;;;;;;;;;5894:40;5908:25;5894:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5894:40:31;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;5885:5;:49;5877:97;;;;-1:-1:-1;;;5877:97:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6029:9;6024:383;6048:25;:32;6044:36;;6024:383;;;6156:12;:42;6169:25;6195:1;6169:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6169:28:31;6156:42;;;;;;;;;;;;;;;6151:246;;6311:4;6266:12;:42;6279:25;6305:1;6279:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6279:28:31;6266:42;;;;;;;;;;;;:49;;-1:-1:-1;;6266:49:31;;;;;;;;;;6353:25;:28;;6333:14;;6353:25;6379:1;;6353:28;;;;;;;;;;;;;;;;;;27:10:-1;;6353:28:31;23:18:-1;;45:23;;6333:49:31;;;;;;;;;;-1:-1:-1;;;;;;6333:49:31;-1:-1:-1;;;;;6353:28:31;;;6333:49;;;;;;6151:246;6082:3;;6024:383;;;;6457:55;6474:10;6486:25;6457:55;;;;-1:-1:-1;;;;;6457:55:31;-1:-1:-1;;;;;6457:55:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6457:55:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6558:32;6565:25;;6558:32;:::i;:::-;-1:-1:-1;6638:26:31;:34;;-1:-1:-1;;6638:34:31;;;5562:1117::o;15861:119::-;15915:7;15941:32;:11;:30;:32::i;10379:673::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;3774:26;;;;3773:27;:57;;;;-1:-1:-1;3805:25:31;;;;;;;3804:26;3773:57;3765:98;;;;;-1:-1:-1;;;3765:98:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;10564:14;;;;;;;10556:52;;;;;-1:-1:-1;;;10556:52:31;;;;;;;;;;;;-1:-1:-1;;;10556:52:31;;;;;;;;;;;;;;;10686:21;10678:49;;;;;-1:-1:-1;;;10678:49:31;;;;;;;;;;;;-1:-1:-1;;;10678:49:31;;;;;;;;;;;;;;;10805:37;:24;10832:10;;10805:37;:::i;:::-;-1:-1:-1;10896:25:31;:32;;-1:-1:-1;;10896:32:31;;;;;11019:25;;;;;;;;;;;;;;;;;;10981:64;;11007:10;;;;11019:25;;11007:10;;;;;;11019:25;;;11007:10;;11019:25;11007:10;11019:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;11019:13:31;;-1:-1:-1;;;11019:25:31:i;:::-;10981:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10981:64:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10981:64:31;;;;-1:-1:-1;10981:64:31;;-1:-1:-1;;;;;10981:64:31;10379:673;;:::o;24535:594::-;1024:12:20;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:20;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:20;;;;;1225:18;1213:4;1225:18;;;1170:80;24816:31:31;24841:5;24816:24;:31::i;:::-;24857:41;24881:16;24857:23;:41::i;:::-;24908:43;24927:7;24936:14;24908:18;:43::i;:::-;24961:35;24983:12;24961:21;:35::i;:::-;25006:26;:24;:26::i;:::-;25042:42;25063:20;25042;:42::i;:::-;25094:12;:28;;;1264:55:20;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:20;;;1264:55;24535:594:31;;;;;;;;:::o;3119:306:26:-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;3240:15;;-1:-1:-1;;;3240:15:26;;;;3232:57;;;;;-1:-1:-1;;;3232:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;3343:6;:19;;-1:-1:-1;;;;;;3343:19:26;;;3378:40;;;3360:1;3378:40;;;;;;;;;;;;;;;;;;;;3119:306::o;19061:304:31:-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;19184:7;17419:8;19156:35;;:74;;;;;17351:10;19195:7;:35;;19156:74;19148:106;;;;;-1:-1:-1;;;19148:106:31;;;;;;;;;;;;-1:-1:-1;;;19148:106:31;;;;;;;;;;;;;;;19264:42;:14;19298:7;19264:42;:33;:42;:::i;:::-;19321:37;;;;;;;;;;;;;;;;;19061:304;:::o;28999:91::-;29071:12;;28999:91;:::o;1695:89:25:-;1765:12;;-1:-1:-1;;;;;1765:12:25;1695:89;:::o;17856:125:31:-;17913:7;17939:35;:14;:33;:35::i;9544:711::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;3774:26;;;;3773:27;:57;;;;-1:-1:-1;3805:25:31;;;;;;;3804:26;3773:57;3765:98;;;;;-1:-1:-1;;;3765:98:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;9676:10;;3333:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3405:204:31;3429:10;:17;3425:1;:21;3405:204;;;3476:23;3485:10;3496:1;3485:13;;;;;;;;;;;;;;3476:8;:23::i;:::-;3475:24;3467:59;;;;;-1:-1:-1;;;3467:59:31;;;;;;;;;;;;-1:-1:-1;;;3467:59:31;;;;;;;;;;;;;;;3573:1;-1:-1:-1;;;;;3548:27:31;:10;3559:1;3548:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3548:27:31;;;3540:58;;;;;-1:-1:-1;;;3540:58:31;;;;;;;;;;;;-1:-1:-1;;;3540:58:31;;;;;;;;;;;;;;;3448:3;;3405:204;;;-1:-1:-1;9766:14:31;;;;;;;9758:52;;;;;-1:-1:-1;;;9758:52:31;;;;;;;;;;;;-1:-1:-1;;;9758:52:31;;;;;;;;;;;;;;;9881:21;9873:49;;;;;-1:-1:-1;;;9873:49:31;;;;;;;;;;;;-1:-1:-1;;;9873:49:31;;;;;;;;;;;;;;;10005:38;:25;10033:10;;10005:38;:::i;:::-;-1:-1:-1;10097:26:31;:33;;-1:-1:-1;;10097:33:31;10126:4;10097:33;;;10222:25;;;;;;;;;;;;;;;;;;10183:65;;10210:10;;;;10222:25;;10210:10;;;;;;10222:25;;;10210:10;;10222:25;10210:10;10222:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10222:13:31;;-1:-1:-1;;;10222:25:31:i;:::-;10183:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10183:65:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10183:65:31;;;;-1:-1:-1;10183:65:31;;-1:-1:-1;;;;;10183:65:31;3873:1;9544:711;;:::o;1496:105:27:-;1575:19;;1496:105;:::o;3508:85:26:-;3580:6;;-1:-1:-1;;;;;3580:6:26;3508:85;:::o;28006:87:31:-;1516:20:26;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;28065:21:31;:19;:21::i;:::-;28006:87::o;16400:100::-;16476:11;:17;16400:100;:::o;31468:2016::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;31588:24;;31615:2;31588:29;;;;:24;31566:19;;;32016:17;32057:1421;32070:11;32064:3;:17;32057:1421;;;32230:28;:20;32255:2;32230:28;:24;:28;:::i;:::-;32444:27;;;32438:34;;32605:2;32573:36;;32567:43;32826:2;32794:36;;;32788:43;;32207:51;;-1:-1:-1;32434:2:31;32430:43;;;;;-1:-1:-1;32567:43:31;;-1:-1:-1;32788:43:31;;-1:-1:-1;32794:36:31;-1:-1:-1;33002:27:31;33026:2;33002:19;32467:3;32788:43;33002:19;:7;:19;:::i;:::-;:23;:27;:23;:27;:::i;:::-;32996:33;;33149:11;33142:3;:18;;33134:44;;;;;-1:-1:-1;;;33134:44:31;;;;;;;;;;;;-1:-1:-1;;;33134:44:31;;;;;;;;;;;;;;;33249:15;33245:70;;-1:-1:-1;33291:9:31;;;;;;;;;-1:-1:-1;33291:9:31;;33245:70;33423:44;33442:11;33455:5;33462:4;33423:18;:44::i;:::-;;32057:1421;;21451:145;21548:41;;;;21451:145;:::o;20582:251::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;20684:17;;20673:7;:28;;20665:65;;;;;-1:-1:-1;;;20665:65:31;;;;;;;;;;;;-1:-1:-1;;;20665:65:31;;;;;;;;;;;;;;;20740:38;:10;20770:7;20740:38;:29;:38;:::i;:::-;20793:33;;;;;;;;;;;;;;;;;20582:251;:::o;1823:809:26:-;1516:20;1525:10;1516:8;:20::i;:::-;1508:55;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;-1:-1:-1;;;1508:55:26;;;;;;;;;;;;;;;1988:15;;-1:-1:-1;;;1988:15:26;;;;1980:57;;;;;-1:-1:-1;;;1980:57:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:22:26;;2110:70;;;;-1:-1:-1;;;2110:70:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:15;:31;;-1:-1:-1;;;;2265:31:26;-1:-1:-1;;;2265:31:26;;;;;;;;2375:75;;2414:25;;;-1:-1:-1;;;;;2414:25:26;;;;;;;;;;;;;;;2375:75;2531:6;;2510:38;;;-1:-1:-1;;;;;2531:6:26;;;2510:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2608:6:26;:17;;-1:-1:-1;;;;;;2608:17:26;-1:-1:-1;;;;;2608:17:26;;;;;;;;;;1823:809::o;33671:550:31:-;33749:7;33838:17;33857:12;33871:14;33895:21;33909:6;33895:13;:21::i;:::-;33835:81;;;;;;;;;;33996:9;33992:205;;;34029:9;34021:28;;;;;-1:-1:-1;;;34021:28:31;;;;;;;;;;;;-1:-1:-1;;;34021:28:31;;;;;;;;;;;;;;;34154:32;34176:9;34154:17;:7;34166:4;34154:17;:11;:17;:::i;:::-;:21;:32;:21;:32;:::i;:::-;34147:39;;;;;;;33992:205;-1:-1:-1;34213:1:31;;33671:550;-1:-1:-1;;;;;33671:550:31:o;16197:147::-;16295:42;;;;16197:147;:::o;3208:26::-;;;;;;;;;:::o;38960:1097::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;39065:7;25234:11;25226:31;;;;;-1:-1:-1;;;25226:31:31;;;;;;;;;;;;-1:-1:-1;;;25226:31:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;39153:17:31;;39145:43;;;;;-1:-1:-1;;;39145:43:31;;;;;;;;;;;;-1:-1:-1;;;39145:43:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;39277:17:31;;;;;;:12;:17;;;;;;;;39272:584;;39394:7;-1:-1:-1;;;;;39498:20:31;;;39494:103;;39551:31;39566:6;39574:7;39551:14;:31::i;:::-;39538:44;;39494:103;39808:37;:11;39834:10;39808:37;:25;:37;:::i;:::-;39272:584;;39931:35;39945:3;39950:6;39958:7;39931:13;:35::i;:::-;40017:33;;;-1:-1:-1;;;;;40017:33:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:1;38960:1097;;;:::o;21294:102::-;21371:18;;21294:102;:::o;6748:1358::-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1471:64:24;;;;;;;;;;;;;;;6935:25:31;;;;;;;6927:59;;;;;-1:-1:-1;;;6927:59:31;;;;;;;;;;;;-1:-1:-1;;;6927:59:31;;;;;;;;;;;;;;;7107:39;7121:24;7107:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7107:39:31;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;7098:5;:48;7090:96;;;;-1:-1:-1;;;7090:96:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7238:9;7233:601;7257:24;:31;7253:35;;7233:601;;;7347:12;:41;7360:24;7385:1;7360:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7360:27:31;7347:41;;;;;;;;;;;;;;;7343:481;;;7452:5;7408:12;:41;7421:24;7446:1;7421:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7421:27:31;7408:41;;;;;;;;;;;;:49;;-1:-1:-1;;7408:49:31;;;;;;;;;;;7475:294;7499:14;:21;:28;;7525:1;7499:28;:25;:28;:::i;:::-;7495:1;:32;7475:294;;;7581:24;7606:1;7581:27;;;;;;;;;;;;;;;;;;7560:14;:17;;-1:-1:-1;;;;;7581:27:31;;;;7575:1;;7560:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7560:17:31;:48;7556:195;;;7656:14;7671:21;;-1:-1:-1;;7671:25:31;;;7656:41;;;;;;;;;;;;;;;;7636:14;:17;;-1:-1:-1;;;;;7656:41:31;;;;7651:1;;7636:17;;;;;;;;;;;;;;:61;;;;;-1:-1:-1;;;;;7636:61:31;;;;;-1:-1:-1;;;;;7636:61:31;;;;;;7723:5;;7556:195;7529:3;;7475:294;;;-1:-1:-1;7786:14:31;:23;;;;;-1:-1:-1;;7786:23:31;;;:::i;:::-;;7343:481;7290:3;;7233:601;;;;7883:58;7904:10;7916:24;7883:58;;;;-1:-1:-1;;;;;7883:58:31;-1:-1:-1;;;;;7883:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7883:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7987:31;7994:24;;7987:31;:::i;:::-;-1:-1:-1;8066:25:31;:33;;-1:-1:-1;;8066:33:31;;;6748:1358::o;18043:110::-;18124:22;;18043:110;:::o;23812:25::-;;;;:::o;11121:145::-;11194:7;11247:10;11230:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11230:28:31;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11230:28:31;;;11220:39;;;;;;11213:46;;11121:145;;;:::o;4680:659::-;1608:20;1617:10;1608:8;:20::i;:::-;:49;;;;1632:25;1646:10;1632:13;:25::i;:::-;1600:84;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;;;;4826:25;;;;;;;4818:59;;;;;-1:-1:-1;;;4818:59:31;;;;;;;;;;;;-1:-1:-1;;;4818:59:31;;;;;;;;;;;;;;;4998:39;5012:24;4998:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4998:39:31;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;4989:5;:48;4981:96;;;;-1:-1:-1;;;4981:96:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5123:31;5130:24;;5123:31;:::i;:::-;5200:25;:33;;-1:-1:-1;;5200:33:31;;;5288:44;;;5314:10;5288:44;;;;;;;;;;;;;;;;;;;;;4680:659;:::o;2987:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2987:31:31;;-1:-1:-1;2987:31:31;:::o;21663:98::-;21738:10;:16;21663:98;:::o;3165:37::-;;;;;;;;;:::o;1778:95:24:-;1851:15;;1778:95;:::o;30711:425:31:-;30765:7;25234:11;25226:31;;;;;-1:-1:-1;;;25226:31:31;;;;;;;;;;;;-1:-1:-1;;;25226:31:31;;;;;;;;;;;;;;;1608:20;1617:10;1608:8;:20::i;:::-;:49;;;;1632:25;1646:10;1632:13;:25::i;:::-;1600:84;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;-1:-1:-1;;;1600:84:31;;;;;;;;;;;;;;;30926:37;:14;30955:7;30926:37;:28;:37;:::i;:::-;31010:7;:5;:7::i;:::-;-1:-1:-1;;;;;31010:16:31;:25;31027:7;31010:25;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31010:25:31;31088:41;31100:10;31112:7;:5;:7::i;:::-;31088:41;;;-1:-1:-1;;;;;31088:41:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30711:425;;:::o;15318:180::-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1471:64:24;;;;;;;;;;;;;;;15402:40:31;:11;15434:7;15402:40;:31;:40;:::i;34422:1540::-;34505:7;34635:13;:11;:13::i;:::-;-1:-1:-1;;;;;34625:23:31;:6;-1:-1:-1;;;;;34625:23:31;;34621:68;;;-1:-1:-1;34671:7:31;34664:14;;34621:68;34721:7;-1:-1:-1;;;;;34775:20:31;;;34771:600;;34947:17;34966:12;34980:14;35004:21;35018:6;35004:13;:21::i;:::-;34944:81;;;;;;;;;;35136:9;35128:41;;;;;-1:-1:-1;;;35128:41:31;;;;;;;;;;;;-1:-1:-1;;;35128:41:31;;;;;;;;;;;;;;;35191:9;35183:28;;;;;-1:-1:-1;;;35183:28:31;;;;;;;;;;;;-1:-1:-1;;;35183:28:31;;;;;;;;;;;;;;;35328:32;35350:9;35328:17;:7;35340:4;35328:17;:11;:17;:::i;:32::-;35313:47;;34771:600;;;;35488:27;35517:22;35541:24;35575:20;:18;:20::i;:::-;35485:110;;;;;;;;;;35661:19;35653:51;;;;;-1:-1:-1;;;35653:51:31;;;;;;;;;;;;-1:-1:-1;;;35653:51:31;;;;;;;;;;;;;;;35722:19;35714:49;;;;;-1:-1:-1;;;35714:49:31;;;;;;;;;;;;-1:-1:-1;;;35714:49:31;;;;;;;;;;;;;;;35898:57;35940:14;35898:37;:12;35915:19;35898:37;:16;:37;:::i;:57::-;35891:64;34422:1540;-1:-1:-1;;;;;;;34422:1540:31:o;20894:177::-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1471:64:24;;;;;;;;;;;;;;;20977:39:31;:10;21008:7;20977:39;:30;:39;:::i;17611:189::-;1479:25:24;1493:10;1479:13;:25::i;:::-;1471:64;;;;;-1:-1:-1;;;1471:64:24;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1471:64:24;;;;;;;;;;;;;;;17698:43:31;:14;17733:7;17698:43;:34;:43;:::i;8594:827::-;2086:20;2095:10;2086:8;:20::i;:::-;:51;;;-1:-1:-1;2110:10:31;2132:4;2110:27;2086:51;2078:80;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;-1:-1:-1;;;2078:80:31;;;;;;;;;;;;;;;8696:10;;3333:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3405:204:31;3429:10;:17;3425:1;:21;3405:204;;;3476:23;3485:10;3496:1;3485:13;;;;;;;3476:23;3475:24;3467:59;;;;;-1:-1:-1;;;3467:59:31;;;;;;;;;;;;-1:-1:-1;;;3467:59:31;;;;;;;;;;;;;;;3573:1;-1:-1:-1;;;;;3548:27:31;:10;3559:1;3548:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3548:27:31;;;3540:58;;;;;-1:-1:-1;;;3540:58:31;;;;;;;;;;;;-1:-1:-1;;;3540:58:31;;;;;;;;;;;;;;;3448:3;;3405:204;;;-1:-1:-1;8791:14:31;;;;;;;8790:15;8782:49;;;;;-1:-1:-1;;;8782:49:31;;;;;;;;;;;;-1:-1:-1;;;8782:49:31;;;;;;;;;;;;;;;8910:9;8905:384;8925:21;;;8905:384;;;9035:12;:27;9048:10;;9059:1;9048:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9048:13:31;9035:27;;-1:-1:-1;9035:27:31;;;;;;;;-1:-1:-1;9035:27:31;;;;9030:249;;9161:4;9131:12;:27;9144:10;;9155:1;9144:13;;;;;;;;;;;;;-1:-1:-1;;;;;9144:13:31;-1:-1:-1;;;;;9131:27:31;-1:-1:-1;;;;;9131:27:31;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9230:14;9250:10;;9261:1;9250:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9230:34:31;;;9250:13;9230:34;;;;;;;-1:-1:-1;;;;;;9230:34:31;-1:-1:-1;;;;;9250:13:31;;;;;;;;;;;;;9230:34;;;;;;-1:-1:-1;9030:249:31;8948:3;;8905:384;;;-1:-1:-1;9298:14:31;:21;;-1:-1:-1;;9298:21:31;;;;;9370:44;;;9387:10;9370:44;;;;;;;;;9399:14;9370:44;;;;;;;;;;9387:10;;9399:14;;9370:44;;;;;;;9399:14;;9370:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9370:44:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:1;8594:827;;:::o;18214:153::-;18315:45;;;;18214:153;:::o;27789:108::-;27848:7;27874:16;27883:6;27874:8;:16::i;4191:107:26:-;4285:6;;-1:-1:-1;;;;;4285:6:26;;;4273:18;;;;4191:107::o;13606:401:31:-;13757:35;;;;;;13756:36;13748:66;;;;;-1:-1:-1;;;13748:66:31;;;;;;;;;;;;-1:-1:-1;;;13748:66:31;;;;;;;;;;;;;;;13883:27;13896:4;13902:7;13883:12;:27::i;:::-;-1:-1:-1;13958:35:31;;:42;;-1:-1:-1;;13958:42:31;13996:4;13958:42;;;13606:401::o;2393:158:24:-;2457:4;2492:28;2504:15;;2492:11;:28::i;:::-;-1:-1:-1;;;;;2480:54:24;;2535:8;2480:64;;;;;;;;;;;;;-1:-1:-1;;;;;2480:64:24;-1:-1:-1;;;;;2480:64:24;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2480:64:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2480:64:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2480:64:24;;2393:158;-1:-1:-1;;2393:158:24:o;2387:1891:2:-;2465:7;2526:9;:16;2546:2;2526:22;2522:72;;-1:-1:-1;2580:1:2;2564:19;;2522:72;2944:4;2929:20;;2923:27;2989:4;2974:20;;2968:27;3042:4;3027:20;;3021:27;2660:9;3013:36;3960:66;3947:79;;3943:127;;;4057:1;4042:17;;;;;;;3943:127;4084:1;:7;;4089:2;4084:7;;:18;;;;;4095:1;:7;;4100:2;4095:7;;4084:18;4080:66;;;4133:1;4118:17;;;;;;;4080:66;4247:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4247:24:2;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4247:24:2;;-1:-1:-1;;4247:24:2;;;2387:1891;-1:-1:-1;;;;;;;2387:1891:2:o;1139:237:22:-;1196:7;-1:-1:-1;;;;;1219:20:22;;;1215:155;;1262:38;;;-1:-1:-1;;;1262:38:22;;1294:4;1262:38;;;;;;-1:-1:-1;;;;;1262:23:22;;;;;:38;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;1262:38:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1262:38:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1262:38:22;;-1:-1:-1;1255:45:22;;1215:155;-1:-1:-1;1338:21:22;1331:28;;12691:240:31;12796:19;;;;12767:7;;12796:33;;12820:8;12796:33;:23;:33;:::i;:::-;12790:3;:39;12786:139;;;-1:-1:-1;12852:10:31;;12845:17;;12786:139;-1:-1:-1;12900:14:31;;;;12893:21;;14142:317;14293:35;;;;;;14285:73;;;;;-1:-1:-1;;;14285:73:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;14430:12;;;;:22;14142:317::o;4491:156:27:-;4552:4;4577:13;4598:17;4612:2;4598:13;:17::i;:::-;-1:-1:-1;4568:47:27;;4491:156;-1:-1:-1;;;;;;;;4491:156:27:o;12231:288:31:-;12367:27;12389:4;12367:21;:27::i;:::-;12430:7;12412:4;:14;;;:25;;12404:54;;;;;-1:-1:-1;;;12404:54:31;;;;;;;;;;;;-1:-1:-1;;;12404:54:31;;;;;;;;;;;;;;;12485:14;;;;:27;;12504:7;12485:27;:18;:27;:::i;:::-;12468:4;:14;;:44;;;;12231:288;;:::o;1971:165:25:-;1549:12;;2042:7;;-1:-1:-1;;;;;1549:12:25;1541:68;;;;;-1:-1:-1;;;1541:68:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;2087:12;;2083:33;;;-1:-1:-1;;;2083:33:25;;;;;;;;;;-1:-1:-1;;;;;2087:12:25;;;;2083:26;;:33;;;;;;;;;;;;;;;2087:12;2083:33;;;5:2:-1;;;;30:1;27;20:12;5:2;2083:33:25;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2083:33:25;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2083:33:25;2068:61;;;-1:-1:-1;;;2068:61:25;;;;;;;;;;-1:-1:-1;;;;;2068:54:25;;;;;;:61;;;;;2083:33;;2068:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2189:611:5;2553:10;;;2552:62;;-1:-1:-1;2569:39:5;;;-1:-1:-1;;;2569:39:5;;2593:4;2569:39;;;;-1:-1:-1;;;;;2569:39:5;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2569:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2569:39:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2569:39:5;:44;2552:62;2544:150;;;;-1:-1:-1;;;2544:150:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:62;;;-1:-1:-1;;;;;2730:62:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2730:62:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2704:89:5;;2723:5;;2704:18;:89::i;:::-;2189:611;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;3974:159:27:-;4036:4;4059:14;4083:17;4097:2;4083:13;:17::i;:::-;-1:-1:-1;4052:48:27;;3974:159;-1:-1:-1;;;;;;;;3974:159:27:o;1759:241::-;1861:7;1870;1912:32;1924:19;;1912:11;:32::i;:::-;-1:-1:-1;;;;;1896:76:27;;1973:12;1987:5;1896:97;;;;;;;;;;;;;-1:-1:-1;;;;;1896:97:27;-1:-1:-1;;;;;1896:97:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1896:97:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1896:97:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1896:97:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1896:97:27;;;;;;;;;;;-1:-1:-1;1759:241:27;-1:-1:-1;;;1759:241:27:o;3757:1095:5:-;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;4542:265:2:-;4741:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4741:58:2;;;;;;;4731:69;;;;;;4542:265::o;28169:128:31:-;28219:10;:12;;;;;;;;28247:43;;;28267:10;28247:43;;;;;;;;;;;;;;;;;;;;;28169:128::o;1409:498:20:-;1820:4;1864:17;1895:7;1409:498;:::o;2191:205:25:-;1024:12:20;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:20;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:20;;;;;1225:18;1213:4;1225:18;;;1170:80;-1:-1:-1;;;;;2320:21:25;;;2316:74;;2357:12;:22;;-1:-1:-1;;;;;;2357:22:25;-1:-1:-1;;;;;2357:22:25;;;;;2316:74;1268:14:20;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:20;;;1264:55;2191:205:25;;:::o;2089:236:24:-;1024:12:20;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:20;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:20;;;;;1225:18;1213:4;1225:18;;;1170:80;2228:30:24;;2224:95;;2274:15;:34;;;1268:14:20;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:20;;;2089:236:24;;:::o;3703:382:26:-;1024:12:20;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:20;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:20;;;;;1225:18;1213:4;1225:18;;;1170:80;3808:6:26;:17;;-1:-1:-1;;;;;;3808:17:26;-1:-1:-1;;;;;3808:17:26;;;-1:-1:-1;;;;3835:31:26;-1:-1:-1;;;3835:31:26;;;;;;;;;;;;;;3950:15;;;3945:77;;3986:25;;;-1:-1:-1;;;;;3986:25:26;;;;;;;;;;;;;;;3945:77;4036:42;;;4065:1;4036:42;;-1:-1:-1;;;;;4036:42:26;;;;;;;;;;;;;;;;;;;1268:14:20;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:20;;;3703:382:26;;;:::o;16884:156:31:-;1024:12:20;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:20;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:20;;;;;1225:18;1213:4;1225:18;;;1170:80;16976:57:31;;;;;;;;;;;;;;;;;17019:3;16976:57;;;;;;-1:-1:-1;16976:57:31;;;;;;;;;;;;;16962:11;:71;;;;;;;;;;;;;;;;;-1:-1:-1;;16962:71:31;;;1264:55:20;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:20;;;16884:156:31;;:::o;19430:184::-;1024:12:20;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:20;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:20;;;;;1225:18;1213:4;1225:18;;;1170:80;19514:93:31;;;;;;;;17351:10;19514:93;;;;;;;;;19593:3;19514:93;;;;;;-1:-1:-1;19514:93:31;;;;;;;;;;;;;19497:110;;;;;;;;;;;;;;;;-1:-1:-1;;19497:110:31;;;1264:55:20;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:20;;;1264:55;19430:184:31;:::o;21767:464::-;1024:12:20;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:20;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:20;;;;;1225:18;1213:4;1225:18;;;1170:80;21857:50:31;21887:19;21857:29;:50::i;:::-;21920:27;21961:20;:18;:20::i;:::-;21917:64;;;;;;;;22021:1;21999:19;:23;21991:49;;;;;-1:-1:-1;;;21991:49:31;;;;;;;;;;;;-1:-1:-1;;;21991:49:31;;;;;;;;;;;;;;;19940:5;22070:52;22050:17;:72;;;22145:79;;;;;;;;;;;;;;;;;22210:3;22145:79;;;;;;-1:-1:-1;22145:79:31;;;;;;;;;;;;;22132:10;:92;;;;;;;;;;;;;;;-1:-1:-1;;22132:92:31;;;1264:55:20;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:20;;;21767:464:31;;:::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;3266:208:27;3324:13;3339:7;3348;3357:4;3363;3369;3375:7;3417:32;3429:19;;3417:11;:32::i;:::-;-1:-1:-1;;;;;3401:62:27;;3464:2;3401:66;;;;;;;;;;;;;-1:-1:-1;;;;;3401:66:27;-1:-1:-1;;;;;3401:66:27;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3401:66:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3401:66:27;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3401:66:27;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3401:66:27;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3401:66:27;;420:4:-1;411:14;;;;3401:66:27;;;;;411:14:-1;3401:66:27;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3401:66:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3401:66:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3394:73;;-1:-1:-1;3401:66:27;;-1:-1:-1;3401:66:27;;-1:-1:-1;3401:66:27;-1:-1:-1;3401:66:27;-1:-1:-1;3401:66:27;-1:-1:-1;3401:66:27;;-1:-1:-1;;;3266:208:27;;;;;;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1365:367:28:-;-1:-1:-1;;;;;1509:20:28;;1505:221;;1564:27;;1546:12;;-1:-1:-1;;;;;1564:8:28;;;1579:7;;1546:12;1564:27;1546:12;1564:27;1579:7;1564:8;:27;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1545:46:28;;;1613:7;1605:39;;;;;-1:-1:-1;;;1605:39:28;;;;;;;;;;;;-1:-1:-1;;;1605:39:28;;;;;;;;;;;;;;;1505:221;;;;1675:40;-1:-1:-1;;;;;1675:26:28;;1702:3;1707:7;1675:40;:26;:40;:::i;11788:338:31:-;11973:7;11957:4;:12;;;:23;11949:70;;;;-1:-1:-1;;;11949:70:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12087:32;12100:4;12106;:12;;;12087;:32::i;5055:141:27:-;5101:7;5143:32;5155:19;;5143:11;:32::i;:::-;-1:-1:-1;;;;;5127:60:27;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5127:62:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5127:62:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5127:62:27;;-1:-1:-1;5055:141:27;:::o;2508:206::-;2561:13;2576:7;2585;2594:4;2600;2606;2612:7;2654:32;2666:19;;2654:11;:32::i;:::-;-1:-1:-1;;;;;2638:67:27;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2638:69:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2638:69:27;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2638:69:27;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2638:69:27;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2638:69:27;;420:4:-1;411:14;;;;2638:69:27;;;;;411:14:-1;2638:69:27;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2638:69:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2638:69:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:76;;2638:69;;-1:-1:-1;2638:69:27;;-1:-1:-1;2638:69:27;-1:-1:-1;2638:69:27;-1:-1:-1;2638:69:27;;-1:-1:-1;2638:69:27;;-1:-1:-1;2508:206:27;;-1:-1:-1;;;2508:206:27:o;13077:425:31:-;13211:27;13233:4;13211:21;:27::i;:::-;13303:20;;;13415:14;;;;:27;-1:-1:-1;13411:85:31;;;13475:10;;13458:14;;;:27;13077:425;;:::o;14533:370::-;14617:19;;;;:33;;14641:8;14617:33;:23;:33;:::i;:::-;14611:3;:39;14607:290;;;14733:3;14711:19;;;:25;14834:10;;14817:14;;;:27;14863:23;;;;14834:10;;14863:23;14533:370;:::o;3614:262:27:-;1024:12:20;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:20;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:20;;;;;1225:18;1213:4;1225:18;;;1170:80;3767:34:27;;3763:107;;3817:19;:42;;;1268:14:20;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:20;;;3614:262:27;;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;22334:17725:31:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22334:17725:31;-1:-1:-1;;;;;22334:17725:31;;;;;;;;;;;;;;;;;;;-1:-1:-1;22334:17725:31;;;-1:-1:-1;22334:17725:31;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22334:17725:31;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "4807600", + "executionCost": "66515", + "totalCost": "4874115" + }, + "external": { + "WALLET_VERSION()": "infinite", + "batchExecuteTransaction(bytes)": "infinite", + "bulkTransfer(address,address[])": "infinite", + "calculateHash(address[])": "infinite", + "cancelWhitelistAddition(bytes32)": "infinite", + "cancelWhitelistRemoval(bytes32)": "infinite", + "confirmGasTopUpLimitUpdate(uint256)": "infinite", + "confirmLoadLimitUpdate(uint256)": "infinite", + "confirmSpendLimitUpdate(uint256)": "infinite", + "confirmWhitelistAddition(bytes32)": "infinite", + "confirmWhitelistRemoval(bytes32)": "infinite", + "controllerNode()": "1131", + "convertToEther(address,uint256)": "infinite", + "convertToStablecoin(address,uint256)": "infinite", + "ensRegistry()": "1148", + "executeRelayedTransaction(uint256,bytes,bytes)": "infinite", + "executeTransaction(address,uint256,bytes)": "infinite", + "gasTopUpLimitAvailable()": "infinite", + "gasTopUpLimitControllerConfirmationRequired()": "1120", + "gasTopUpLimitPending()": "1066", + "gasTopUpLimitValue()": "1066", + "getBalance(address)": "infinite", + "increaseRelayNonce()": "23278", + "initializeWallet(address,bool,address,bytes32,bytes32,bytes32,uint256)": "infinite", + "isSetWhitelist()": "1088", + "isTransferable()": "1140", + "isValidSignature(bytes,bytes)": "infinite", + "isValidSignature(bytes32,bytes)": "infinite", + "licenceNode()": "1087", + "loadLimitAvailable()": "infinite", + "loadLimitControllerConfirmationRequired()": "1144", + "loadLimitPending()": "1109", + "loadLimitValue()": "1087", + "loadTokenCard(address,uint256)": "infinite", + "owner()": "1150", + "pendingWhitelistAddition()": "infinite", + "pendingWhitelistRemoval()": "infinite", + "relayNonce()": "1088", + "renounceOwnership()": "24167", + "setGasTopUpLimit(uint256)": "infinite", + "setLoadLimit(uint256)": "infinite", + "setSpendLimit(uint256)": "infinite", + "setWhitelist(address[])": "infinite", + "spendLimitAvailable()": "infinite", + "spendLimitControllerConfirmationRequired()": "1144", + "spendLimitPending()": "1091", + "spendLimitValue()": "1088", + "submitGasTopUpLimitUpdate(uint256)": "infinite", + "submitLoadLimitUpdate(uint256)": "infinite", + "submitSpendLimitUpdate(uint256)": "infinite", + "submitWhitelistAddition(address[])": "infinite", + "submitWhitelistRemoval(address[])": "infinite", + "submittedWhitelistAddition()": "1100", + "submittedWhitelistRemoval()": "1132", + "supportsInterface(bytes4)": "376", + "tokenWhitelistNode()": "1089", + "topUpGas(uint256)": "infinite", + "transfer(address,address,uint256)": "infinite", + "transferOwnership(address,bool)": "infinite", + "whitelistArray(uint256)": "2037", + "whitelistMap(address)": "1270" + }, + "internal": { + "_increaseRelayNonce()": "infinite" + } + }, + "methodIdentifiers": { + "WALLET_VERSION()": "1127b57e", + "batchExecuteTransaction(bytes)": "aaf1fc62", + "bulkTransfer(address,address[])": "1aa21fba", + "calculateHash(address[])": "cd7958dd", + "cancelWhitelistAddition(bytes32)": "100f23fd", + "cancelWhitelistRemoval(bytes32)": "ce0b5bd5", + "confirmGasTopUpLimitUpdate(uint256)": "f41c4319", + "confirmLoadLimitUpdate(uint256)": "f40b51f8", + "confirmSpendLimitUpdate(uint256)": "eadd3cea", + "confirmWhitelistAddition(bytes32)": "5adc02ab", + "confirmWhitelistRemoval(bytes32)": "cbd2ac68", + "controllerNode()": "e2b4ce97", + "convertToEther(address,uint256)": "b87e21ef", + "convertToStablecoin(address,uint256)": "f36febda", + "ensRegistry()": "7d73b231", + "executeRelayedTransaction(uint256,bytes,bytes)": "46efe0ed", + "executeTransaction(address,uint256,bytes)": "3f579f42", + "gasTopUpLimitAvailable()": "7d7d0046", + "gasTopUpLimitControllerConfirmationRequired()": "f776f518", + "gasTopUpLimitPending()": "cc0e7e56", + "gasTopUpLimitValue()": "2587a6a2", + "getBalance(address)": "f8b2cb4f", + "increaseRelayNonce()": "90e690c7", + "initializeWallet(address,bool,address,bytes32,bytes32,bytes32,uint256)": "69efdfc0", + "isSetWhitelist()": "be40ba79", + "isTransferable()": "2121dc75", + "isValidSignature(bytes,bytes)": "20c13b0b", + "isValidSignature(bytes32,bytes)": "1626ba7e", + "licenceNode()": "747c31d6", + "loadLimitAvailable()": "1efd0299", + "loadLimitControllerConfirmationRequired()": "ab205993", + "loadLimitPending()": "c4856cd9", + "loadLimitValue()": "da84b1ed", + "loadTokenCard(address,uint256)": "3a43199f", + "owner()": "8da5cb5b", + "pendingWhitelistAddition()": "47b55a9d", + "pendingWhitelistRemoval()": "294f4025", + "relayNonce()": "cccdc556", + "renounceOwnership()": "715018a6", + "setGasTopUpLimit(uint256)": "0f3a85d8", + "setLoadLimit(uint256)": "3bfec254", + "setSpendLimit(uint256)": "3c672eb7", + "setWhitelist(address[])": "f4217648", + "spendLimitAvailable()": "5d2362a8", + "spendLimitControllerConfirmationRequired()": "bcb8b74a", + "spendLimitPending()": "027ef3eb", + "spendLimitValue()": "9b0dfd27", + "submitGasTopUpLimitUpdate(uint256)": "74624c55", + "submitLoadLimitUpdate(uint256)": "b221f316", + "submitSpendLimitUpdate(uint256)": "21ce918d", + "submitWhitelistAddition(address[])": "7fd004fa", + "submitWhitelistRemoval(address[])": "6137d670", + "submittedWhitelistAddition()": "26d05ab2", + "submittedWhitelistRemoval()": "de212bf3", + "supportsInterface(bytes4)": "01ffc9a7", + "tokenWhitelistNode()": "877337b0", + "topUpGas(uint256)": "e61c51ca", + "transfer(address,address,uint256)": "beabacc8", + "transferOwnership(address,bool)": "b242e534", + "whitelistArray(uint256)": "d251fefc", + "whitelistMap(address)": "32531c3c" + } + }, + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "AddedToWhitelist", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_assets", + "type": "address[]" + } + ], + "name": "BulkTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CancelledWhitelistAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CancelledWhitelistRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_returnData", + "type": "bytes" + } + ], + "name": "ExecutedRelayedTransaction", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_returnData", + "type": "bytes" + } + ], + "name": "ExecutedTransaction", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_currentNonce", + "type": "uint256" + } + ], + "name": "IncreasedRelayNonce", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "LoadedTokenCard", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "RemovedFromWhitelist", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetGasTopUpLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetLoadLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetSpendLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedGasTopUpLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedLoadLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedSpendLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "SubmittedWhitelistAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "SubmittedWhitelistRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "ToppedUpGas", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "Transferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "UpdatedAvailableLimit", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "WALLET_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "_transactionBatch", + "type": "bytes" + } + ], + "name": "batchExecuteTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_assets", + "type": "address[]" + } + ], + "name": "bulkTransfer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "calculateHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "cancelWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "cancelWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmGasTopUpLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmLoadLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmSpendLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "confirmWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "confirmWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "convertToEther", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "convertToStablecoin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "executeRelayedTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "executeTransaction", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + } + ], + "name": "getBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "increaseRelayNonce", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_owner_", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable_", + "type": "bool" + }, + { + "internalType": "address", + "name": "_ens_", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_tokenWhitelistNode_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_controllerNode_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_licenceNode_", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_spendLimit_", + "type": "uint256" + } + ], + "name": "initializeWallet", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isSetWhitelist", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hashedData", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "licenceNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "loadTokenCard", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "pendingWhitelistAddition", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "pendingWhitelistRemoval", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "relayNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setGasTopUpLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setLoadLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setSpendLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "setWhitelist", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitGasTopUpLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitLoadLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitSpendLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "submitWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "submitWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "submittedWhitelistAddition", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "submittedWhitelistRemoval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceID", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenWhitelistNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "topUpGas", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "whitelistArray", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "whitelistMap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/contracts/artifacts/Wallet_metadata.json b/contracts/artifacts/Wallet_metadata.json new file mode 100644 index 00000000..9a20137d --- /dev/null +++ b/contracts/artifacts/Wallet_metadata.json @@ -0,0 +1,2004 @@ +{ + "compiler": { + "version": "0.5.17+commit.d19bba13" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "AddedToWhitelist", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_assets", + "type": "address[]" + } + ], + "name": "BulkTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CancelledWhitelistAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "CancelledWhitelistRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_ensRegistry", + "type": "address" + } + ], + "name": "ENSSetRegistry", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_returnData", + "type": "bytes" + } + ], + "name": "ExecutedRelayedTransaction", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_returnData", + "type": "bytes" + } + ], + "name": "ExecutedTransaction", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_currentNonce", + "type": "uint256" + } + ], + "name": "IncreasedRelayNonce", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "LoadedTokenCard", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_locked", + "type": "address" + } + ], + "name": "LockedOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "RemovedFromWhitelist", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetGasTopUpLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetLoadLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SetSpendLimit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedGasTopUpLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedLoadLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "SubmittedSpendLimitUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "SubmittedWhitelistAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "SubmittedWhitelistRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "ToppedUpGas", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "Transferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "TransferredOwnership", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "UpdatedAvailableLimit", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "WALLET_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "_transactionBatch", + "type": "bytes" + } + ], + "name": "batchExecuteTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "address[]", + "name": "_assets", + "type": "address[]" + } + ], + "name": "bulkTransfer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "calculateHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "cancelWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "cancelWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmGasTopUpLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmLoadLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "confirmSpendLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "confirmWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + } + ], + "name": "confirmWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controllerNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "convertToEther", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "convertToStablecoin", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ensRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "executeRelayedTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "executeTransaction", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gasTopUpLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + } + ], + "name": "getBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "increaseRelayNonce", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_owner_", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable_", + "type": "bool" + }, + { + "internalType": "address", + "name": "_ens_", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_tokenWhitelistNode_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_controllerNode_", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_licenceNode_", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_spendLimit_", + "type": "uint256" + } + ], + "name": "initializeWallet", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isSetWhitelist", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isTransferable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "_hashedData", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "licenceNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "loadLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "loadTokenCard", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "pendingWhitelistAddition", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "pendingWhitelistRemoval", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "relayNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setGasTopUpLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setLoadLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "setSpendLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "setWhitelist", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitAvailable", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitControllerConfirmationRequired", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitPending", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "spendLimitValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitGasTopUpLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitLoadLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "submitSpendLimitUpdate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "submitWhitelistAddition", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address[]", + "name": "_addresses", + "type": "address[]" + } + ], + "name": "submitWhitelistRemoval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "submittedWhitelistAddition", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "submittedWhitelistRemoval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceID", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenWhitelistNode", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "topUpGas", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "_account", + "type": "address" + }, + { + "internalType": "bool", + "name": "_transferable", + "type": "bool" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "whitelistArray", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "whitelistMap", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "methods": { + "batchExecuteTransaction(bytes)": { + "details": "This function allows for the wallet to send a batch of transactions instead of one, it calls executeTransaction() so that the daily limit is enforced.", + "params": { + "_transactionBatch": "data encoding the transactions to be sent, following executeTransaction's format i.e. (destination, value, data)" + } + }, + "bulkTransfer(address,address[])": { + "details": "This is a bulk transfer convenience function, used to migrate contracts.", + "params": { + "_assets": "is an array of addresses of ERC20 tokens or 0x0 for ether.", + "_to": "is the recipient's address, can't be the zero (0x0) address: transfer() will revert." + } + }, + "calculateHash(address[])": { + "details": "Method used to hash our whitelist address arrays." + }, + "cancelWhitelistAddition(bytes32)": { + "details": "Cancel pending whitelist addition." + }, + "cancelWhitelistRemoval(bytes32)": { + "details": "Cancel pending removal of whitelisted addresses." + }, + "confirmGasTopUpLimitUpdate(uint256)": { + "details": "Confirm pending set top up gas limit operation." + }, + "confirmLoadLimitUpdate(uint256)": { + "details": "Confirm pending set load limit operation." + }, + "confirmSpendLimitUpdate(uint256)": { + "details": "Confirm pending set daily limit operation." + }, + "confirmWhitelistAddition(bytes32)": { + "details": "Confirm pending whitelist addition.This will only ever be applied post 2FA, by one of the Controllers", + "params": { + "_hash": "is the hash of the pending whitelist array, a form of lamport lock" + } + }, + "confirmWhitelistRemoval(bytes32)": { + "details": "Confirm pending removal of whitelisted addresses." + }, + "controllerNode()": { + "return": "the controller node registered in ENS." + }, + "convertToEther(address,uint256)": { + "details": "Convert ERC20 token amount to the corresponding ether amount.", + "params": { + "_amount": "amount of token in base units.", + "_token": "ERC20 token contract address." + } + }, + "convertToStablecoin(address,uint256)": { + "details": "Convert ether or ERC20 token amount to the corresponding stablecoin amount.", + "params": { + "_amount": "amount of token in base units.", + "_token": "ERC20 token contract address." + } + }, + "ensRegistry()": { + "return": "Current address of the ENS registry contract." + }, + "executeRelayedTransaction(uint256,bytes,bytes)": { + "details": "This function allows for the controller to relay transactions on the owner's behalf, the relayed message has to be signed by the owner.", + "params": { + "_data": "abi encoded data payload.", + "_nonce": "only used for relayed transactions, must match the wallet's relayNonce.", + "_signature": "signed prefix + data." + } + }, + "executeTransaction(address,uint256,bytes)": { + "details": "This function allows for the owner to send any transaction from the Wallet to arbitrary addresses", + "params": { + "_data": "transaction payload binary", + "_destination": "address of the transaction", + "_value": "ETH amount in wei" + } + }, + "gasTopUpLimitAvailable()": { + "details": "View your available gas top-up limit" + }, + "gasTopUpLimitControllerConfirmationRequired()": { + "details": "Has the gas top-up limit been initialised" + }, + "gasTopUpLimitPending()": { + "details": "Is there an active gas top-up limit change" + }, + "gasTopUpLimitValue()": { + "details": "View how much gas top-up has been spent already" + }, + "getBalance(address)": { + "details": "This returns the balance of the contract for any ERC20 token or ETH.", + "params": { + "_asset": "is the address of an ERC20 token or 0x0 for ETH." + } + }, + "increaseRelayNonce()": { + "details": "This allows the user to cancel a transaction that was unexpectedly delayed by the relayer" + }, + "initializeWallet(address,bool,address,bytes32,bytes32,bytes32,uint256)": { + "details": "Initializes the wallet top up limit and the vault contract.", + "params": { + "_controllerNode_": "is the ENS name node of the Controller contract.", + "_ens_": "is the address of the ENS registry.", + "_licenceNode_": "is the ENS name node of the Licence contract.", + "_owner_": "is the owner account of the wallet contract.", + "_spendLimit_": "is the initial spend limit.", + "_tokenWhitelistNode_": "is the ENS name node of the Token whitelist.", + "_transferable_": "indicates whether the contract ownership can be transferred." + } + }, + "isTransferable()": { + "return": "true if the ownership is transferable." + }, + "isValidSignature(bytes,bytes)": { + "details": "Implements EIP-1271: receives the raw data (bytes) https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md", + "params": { + "_data": "Arbitrary length data signed on the behalf of address(this)", + "_signature": "Signature byte array associated with _data" + } + }, + "isValidSignature(bytes32,bytes)": { + "details": "Implements EIP-1654: receives the hashed message(bytes32) https://github.com/ethereum/EIPs/issues/1654.md", + "params": { + "_hashedData": "Hashed data signed on the behalf of address(this)", + "_signature": "Signature byte array associated with _dataHash" + } + }, + "licenceNode()": { + "return": "licence contract node registered in ENS." + }, + "loadLimitAvailable()": { + "details": "View your available load limit" + }, + "loadLimitControllerConfirmationRequired()": { + "details": "Has the load limit been initialised" + }, + "loadLimitPending()": { + "details": "Is there an active load limit change" + }, + "loadLimitValue()": { + "details": "View how much laod limit has been spent already" + }, + "loadTokenCard(address,uint256)": { + "details": "Load a token card with the specified asset amount.the amount send should be inclusive of the percent licence.", + "params": { + "_amount": "is the amount of assets to be transferred in base units.", + "_asset": "is the address of an ERC20 token or 0x0 for ether." + } + }, + "owner()": { + "return": "address of the owner." + }, + "pendingWhitelistAddition()": { + "details": "Getter for pending addition array." + }, + "pendingWhitelistRemoval()": { + "details": "Getter for pending removal array." + }, + "renounceOwnership()": { + "details": "Renouncing to ownership will leave the contract without an owner and unusable.It will not be possible to call the functions with the `onlyOwner` modifier anymore." + }, + "setGasTopUpLimit(uint256)": { + "details": "Sets the daily gas top up limit.", + "params": { + "_amount": "is the gas top up amount in wei." + } + }, + "setLoadLimit(uint256)": { + "details": "Sets a daily card load limit.", + "params": { + "_amount": "is the card load amount in current stablecoin base units." + } + }, + "setSpendLimit(uint256)": { + "details": "Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.", + "params": { + "_amount": "is the daily limit amount in wei." + } + }, + "setWhitelist(address[])": { + "details": "Add initial addresses to the whitelist.", + "params": { + "_addresses": "are the Ethereum addresses to be whitelisted." + } + }, + "spendLimitAvailable()": { + "details": "View your available limit" + }, + "spendLimitControllerConfirmationRequired()": { + "details": "Has the spend limit been initialised" + }, + "spendLimitPending()": { + "details": "Is there an active spend limit change" + }, + "spendLimitValue()": { + "details": "View how much has been spent already" + }, + "submitGasTopUpLimitUpdate(uint256)": { + "details": "Submit a daily gas top up limit update.", + "params": { + "_amount": "is the daily top up gas limit amount in wei." + } + }, + "submitLoadLimitUpdate(uint256)": { + "details": "Submit a daily load limit update.", + "params": { + "_amount": "is the daily load limit amount in wei." + } + }, + "submitSpendLimitUpdate(uint256)": { + "details": "Submit a daily transfer limit update for non-whitelisted addresses.", + "params": { + "_amount": "is the daily limit amount in wei." + } + }, + "submitWhitelistAddition(address[])": { + "details": "Add addresses to the whitelist.", + "params": { + "_addresses": "are the Ethereum addresses to be whitelisted." + } + }, + "submitWhitelistRemoval(address[])": { + "details": "Remove addresses from the whitelist.", + "params": { + "_addresses": "are the Ethereum addresses to be removed." + } + }, + "supportsInterface(bytes4)": { + "details": "Checks for interface support based on ERC165." + }, + "tokenWhitelistNode()": { + "return": "TokenWhitelist's node registered in ENS." + }, + "topUpGas(uint256)": { + "details": "Refill owner's gas balance, revert if the transaction amount is too large", + "params": { + "_amount": "is the amount of ether to transfer to the owner account in wei." + } + }, + "transfer(address,address,uint256)": { + "details": "Transfers the specified asset to the recipient's address.", + "params": { + "_amount": "is the amount of assets to be transferred in base units.", + "_asset": "is the address of an ERC20 token or 0x0 for ether.", + "_to": "is the recipient's address." + } + }, + "transferOwnership(address,bool)": { + "params": { + "_account": "address to transfer ownership to.", + "_transferable": "indicates whether to keep the ownership transferable." + } + } + }, + "title": "Asset wallet with extra security features, gas top up management and card integration." + }, + "userdoc": { + "methods": { + "bulkTransfer(address,address[])": { + "notice": "If any of the transfers fail, this will revert." + }, + "isTransferable()": { + "notice": "check if the ownership is transferable." + }, + "owner()": { + "notice": "Find out owner address" + }, + "renounceOwnership()": { + "notice": "Allows the current owner to relinquish control of the contract." + }, + "tokenWhitelistNode()": { + "notice": "This shows what TokenWhitelist is being used" + }, + "transferOwnership(address,bool)": { + "notice": "Allows the current owner to transfer control of the contract to a new address." + } + } + } + }, + "settings": { + "compilationTarget": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": "Wallet" + }, + "evmVersion": "istanbul", + "libraries": {}, + "optimizer": { + "enabled": true, + "runs": 200 + }, + "remappings": [] + }, + "sources": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/controller.sol": { + "keccak256": "0xb68e6d7092e8e9b3a914aea22172dce9c26dfa9805ba819958b5b8dde7dfd50f", + "urls": [ + "bzz-raw://a1cdba6a1bfc923815b2c1116327c1951ecf40ea8c67ae2456e1c4c50217eb61", + "dweb:/ipfs/QmX4rCEuMEBg6X3cpKdjTtxgNYBrCJyyA51KRR8vbE6sDF" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": { + "keccak256": "0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1", + "urls": [ + "bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf", + "dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ECDSA.sol": { + "keccak256": "0xfc3dde0661847b56e4ff8926be7e4cde9d960cbe18480e01ee648cfbf5d4055a", + "urls": [ + "bzz-raw://d8747b09cbf2ee6d96d21a990fcf326f08084c79fcfad5ed331d64b5705487d9", + "dweb:/ipfs/QmPsy6pKdNtGndw5PMRAXEQ8pVKEMuLvAbgxffZ9cXL4T1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC165.sol": { + "keccak256": "0xaca91baae00478feaafaedff2fc8ebd3d6738c7877ad78d9565ef328f683f4e8", + "urls": [ + "bzz-raw://c55b05166c731d830498a2dd576c6b19ba114e73eb5011dc684f368cb84c5216", + "dweb:/ipfs/QmVyYr64yP1aqFvhBSZeJtzMaPdLyF9w8pytudogFWKtur" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ERC20.sol": { + "keccak256": "0x54628c1175e0e40ff56df85e92bd9b4e5ee1614600713379ff885bd07f6ef010", + "urls": [ + "bzz-raw://2a0a4531eb59752b7c3315f3c796d2ce2befb0d21eca1908eb94f44873e458de", + "dweb:/ipfs/QmbrqZGUQZaSpYndb9eQ9WVEeboRBHaomma91tpD4ESWeE" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeERC20.sol": { + "keccak256": "0xa654c1247c418db9eb3034e5b795760d2048864625f509a0e81632351e4199c0", + "urls": [ + "bzz-raw://3798f03a8e74dcf0c90072c3f88ccc8be887b9fd9707b063e4c47df0a610478b", + "dweb:/ipfs/QmSaY9ZKzihx5GC3h9XiUmBpQbwhRQw93yasRqxp45cXBJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/SafeMath.sol": { + "keccak256": "0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690", + "urls": [ + "bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610", + "dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENS.sol": { + "keccak256": "0x5d115f126a237cfccc6c687301f87bf3210b7f68594ef780d796caa6e72d6060", + "urls": [ + "bzz-raw://6ca3f8dbd17933dd487c532fcfddc42ec7b46f7ccc84cfcb266cbf8bf453758c", + "dweb:/ipfs/QmcrckQwvrffFdSgrC5txQw5xNruAVtkDQ2aj9V1MtVwKD" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ENSBytesUtils.sol": { + "keccak256": "0xe9599418173f34cc89c737059f398ba9a9f5e8a44c67af218bb3373c589f3499", + "urls": [ + "bzz-raw://b20acd1d67c676364e862f4cecdcfc4ade3efc22445fb6fda4a801f6d865bde1", + "dweb:/ipfs/QmW2EP3T1y6kLtfB2rZFhqFBFWzUthvC1DZWzTfVLehPsy" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/PublicResolver.sol": { + "keccak256": "0xdc5767dd5f4c192c3085e89bcc3ab791ab4e3e082f03bfdca1e48f75a0ce72aa", + "urls": [ + "bzz-raw://d4cd247165490f08c6903e99dd86f8a6d279763b0a79660e544a7b8ae0e071dd", + "dweb:/ipfs/QmRyepaRuSLF8QNkV5QSwoTtc6BjX3Kr7KP8GQuCtWp1MH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/RRUtils.sol": { + "keccak256": "0x7be2b14a352eda9d632f2969e8ae00e6e2bf8cb286a0e1d9c3fb2af0b9d2d799", + "urls": [ + "bzz-raw://df3a4d1fb8e19407921d1dfe3a1b8029eb4dd7321f8dc66e16bb97590ce6ff3b", + "dweb:/ipfs/QmV2UTNqJAhiAGBYjUMZYuvvWpj43WC3VpZivmW3LSpfdc" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/ResolverBase.sol": { + "keccak256": "0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8", + "urls": [ + "bzz-raw://dc477afd53175b96112bb0e2e25ce85b1f7c0e3fe0da4a2e8539d86712583b00", + "dweb:/ipfs/QmQdwwHEcNMxTWtkrNpkbxtokwiFDdQ5xwPYcuZPRbJQKp" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ABIResolver.sol": { + "keccak256": "0x794514d39c469bab511822ca7a1a7a7838dca338499889896c7dac4303c30c1f", + "urls": [ + "bzz-raw://3668c3ec6be58cf6bbbe2cfcb8e286927fa5ab028d501c8b26d2eeb816ce7303", + "dweb:/ipfs/Qme7RMhhcFxa1xzhJz24s3rdW2VePsPdJhFgQbAiieMjKz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/AddrResolver.sol": { + "keccak256": "0x4d6a95626f02bfc6e5ee75cde2a38e67e9eb9aada78473e05b7003ebd60d8ffb", + "urls": [ + "bzz-raw://45407b2f99a29d0cc3df3636ecc5316414d6eb855860e382dffa57329886d74a", + "dweb:/ipfs/QmaKTuaHdy7ADgPY718fsiwjn2Hd6dqxPtgRcwjNxtdunG" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/ContentHashResolver.sol": { + "keccak256": "0xaa3d9b9baae36fbf831b8297832b54ffd1023b9ac508f2c5068b92ce0c30edfc", + "urls": [ + "bzz-raw://a30f83bbf8d55051bdc0b151131e5dca4966fe87f36648f9bf3e580d81d85fa2", + "dweb:/ipfs/QmbWeakvTkEJTRxqFL6wZPDdN6Wqq1tSgCJiu861UbH3yH" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/DNSResolver.sol": { + "keccak256": "0x348116b6a303561102f057b89ce14b1bdc5a254c701380cdb1c682adf7e0f749", + "urls": [ + "bzz-raw://8cc58072164c74bf520a061918c422554097134f74854f0b3e1093ba36798f24", + "dweb:/ipfs/QmSsDaHZSjjNZVzbmkxhAKNkjpWMKtMKEVh9cLbskW4NJn" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/InterfaceResolver.sol": { + "keccak256": "0x6398dc59dd38501acd6a716173793e84aa1c454c3e21c190e10ddbe54dd8be41", + "urls": [ + "bzz-raw://7b3af5c29db8d4c13631b3ec427e5dc6dee1a5df0560d36b32deda2451e4bc11", + "dweb:/ipfs/QmXe2sWt31kEELa4VPU84QUUK6UDw6mQANc9gMVezoqioP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/NameResolver.sol": { + "keccak256": "0xcff06da8901397164ca9bea36361ac518fb62cd5283d2e2e835e006980ba4d16", + "urls": [ + "bzz-raw://ab5b2748d4297385b92a83aafdc79fc343842ee71e9537fa9c8cf4d2fbd4aeb0", + "dweb:/ipfs/QmZzZYyiRxZU271QDKhL4F4VdCfx5dZq4fT9Ud786XtiZz" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/PubkeyResolver.sol": { + "keccak256": "0xaa10a8a7e1579987b6781657153ae3f16806f240b3ffaa54ea1f303f7cb7a74a", + "urls": [ + "bzz-raw://3ee3cbb2cca361819cea208485c718a3288cf9dc22762bb08c3dc445b60dc862", + "dweb:/ipfs/QmeXyPzZHyPMSHvQPDsCtjdC3rMCTzZNWeYXaWqiDbdmSt" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/ens/profiles/TextResolver.sol": { + "keccak256": "0xdfb11cd7e9aef793d88c517195a6d3ac4736aa2aa7f27baafc2541bb2c639774", + "urls": [ + "bzz-raw://84b3d3a186a91c242a729be0da2ad1b705a332472cea0c81d81d4b8e309f3440", + "dweb:/ipfs/QmQTKAyoS6DEUUNVKb5aECk3GBGb7AZNGSV4untv1ZNngi" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/initializable.sol": { + "keccak256": "0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721", + "urls": [ + "bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f", + "dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/strings.sol": { + "keccak256": "0xd7c99d0733e73dc27cba285890b254d36d070807da9e60a573dcc4b5ec3c6f3d", + "urls": [ + "bzz-raw://95845b2178b081aa0ad872f04694fd87f9553d0f78b8e079ce98773dbafc9033", + "dweb:/ipfs/QmPsNebBo51KzdM7ewAPJ5weCL7J5Piy2y1Hgcto2TmvDP" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/balanceable.sol": { + "keccak256": "0x5a1c23a4b3afdad849f0639bac47e8c08c1949f0aa531113e06883f9a7ab6662", + "urls": [ + "bzz-raw://a9e6c391948533011c757d89a67cdcc6a741afa7e1c242138c591594d3a3238c", + "dweb:/ipfs/QmfPoN9Dv2AuPBcY1nAdByMAuW1Z7Wj4CnRW3KnRLtiuQM" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/bytesUtils.sol": { + "keccak256": "0x4ea4f266580ca57be6ec7b0d2fe6adb0bf51f978648c3aa65e8d02fe91351522", + "urls": [ + "bzz-raw://b3badb0e0c1dd6b21249852eb2b8fcdd2adffb2aa663926b51241d8eb06d2857", + "dweb:/ipfs/QmRvKPafRARyjdq5duZwx55cxUL4Vi8qvXo5HmQDt5Sq3s" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/controllable.sol": { + "keccak256": "0x8245bddc77a7c5b44dc7f285404193e47b951e9cbba12a765828cb3023f64336", + "urls": [ + "bzz-raw://df426810c455bccd40f5976a2906382e35800fe47e45a1991b4c3684827dd5ad", + "dweb:/ipfs/QmfMrmV9xYTy6NfFnWR4Y29qRzgU8wmiNjkbnYoFUw8YK6" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ensResolvable.sol": { + "keccak256": "0xddb1c7898472491906ebfa73b4c83f8bc946ff3e94e5c8814fe6ea063f3fb665", + "urls": [ + "bzz-raw://7911bc8eb24a89b0eb0e088de4399083af7b2761cce12cd622db715e46994897", + "dweb:/ipfs/QmTz3SyAoGFDopiJuFRES7x155hNFWLF6d9yctJhdNx9m5" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/ownable.sol": { + "keccak256": "0x42429c64258acf6e8018aca4fb048760aba8c26e8256d7b7b93be6d542ad8726", + "urls": [ + "bzz-raw://d617ddff648eaffe0b13519b85c1405ed4b57c3a5329d2c950f06485b0f730a3", + "dweb:/ipfs/QmdgX3w1b5psWWEQzRRQ1j2Ej7NNQC1bWxc95YJJFay9f1" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/tokenWhitelistable.sol": { + "keccak256": "0x6f0e7922c0be342960f7d3ff610ea3e6e46aa76e1f73f1ff6a529e352532f0a8", + "urls": [ + "bzz-raw://024bf0b3b2df1c5af6cfcd2aa6f281b98b48408b32ac400246a629e539e81ffe", + "dweb:/ipfs/QmNMb6C7a9pzcU7Gu48RBMcV3L3CitpjPiGC3zvNe9wnMj" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/internals/transferrable.sol": { + "keccak256": "0x5f215d0f4f446f068e3948a7b5cf4dd621f4e9c4ba45047b95c4b7ad4c02765d", + "urls": [ + "bzz-raw://cda044581d476790ed11a5f8fb7ccc978e30b8649efa0132f0c701cdf30c2cb0", + "dweb:/ipfs/QmR4oKPAQyfV3wCtsuqT5V2D3BZvsgxV5Wufn5vtAH5ZkJ" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/licence.sol": { + "keccak256": "0x6adf2a5bc0e6bb1b53ce1a7085b7e10573d8ca6297f5f34e606ccaa4b3079a1c", + "urls": [ + "bzz-raw://d90d7cd882d355a1aec7d88c1bfe8eed85ee30b8ff7f101f7ef1fb4501e700c1", + "dweb:/ipfs/Qmdz8Fzpj9cE8msmcBUEP18KLfrjnvSdFjDf9yxAcCt1KY" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/tokenWhitelist.sol": { + "keccak256": "0x560b9284f40382c95ab64856a7acfd53eb416593053a40cf9f6fe229e08372a0", + "urls": [ + "bzz-raw://e2a217afa376bcb0d901937b52995a33f3ea16dff7e76691b20e761802e4a14b", + "dweb:/ipfs/QmZJhPn8zTtBBE2RQvWLA7FzGLsdbxDcRkMCKiyCw6ypQr" + ] + }, + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/wallet.sol": { + "keccak256": "0xdb84a948b1cd2f957eb445c541bf7689209c34dbab08ebce9faa0ddfb4aeb47b", + "urls": [ + "bzz-raw://bda80e1f7779ce8582edf170ec8b4d568e1a1f9ab0e171708f39afc0c272e1b3", + "dweb:/ipfs/QmNyeVpgs7ii3bGNbrM1B1yCz1Xs4DwcWKp8DgUm9vz241" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/contracts/externals/artifacts/Address.json b/contracts/externals/artifacts/Address.json new file mode 100644 index 00000000..86a50e72 --- /dev/null +++ b/contracts/externals/artifacts/Address.json @@ -0,0 +1,58 @@ +{ + "deploy": { + "VM:-": { + "linkReferences": {}, + "autoDeployLib": true + }, + "main:1": { + "linkReferences": {}, + "autoDeployLib": true + }, + "ropsten:3": { + "linkReferences": {}, + "autoDeployLib": true + }, + "rinkeby:4": { + "linkReferences": {}, + "autoDeployLib": true + }, + "kovan:42": { + "linkReferences": {}, + "autoDeployLib": true + }, + "görli:5": { + "linkReferences": {}, + "autoDeployLib": true + }, + "Custom": { + "linkReferences": {}, + "autoDeployLib": true + } + }, + "data": { + "bytecode": { + "linkReferences": {}, + "object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158209096f075c6cddc51ee46e58c6d5ad315f2732a0cde088eef3ce696961792e2a764736f6c63430005110032", + "opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP1 SWAP7 CREATE PUSH22 0xC6CDDC51EE46E58C6D5AD315F2732A0CDE088EEF3CE6 SWAP7 SWAP7 OR SWAP3 0xE2 0xA7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "94:863:0:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158209096f075c6cddc51ee46e58c6d5ad315f2732a0cde088eef3ce696961792e2a764736f6c63430005110032", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 SWAP1 SWAP7 CREATE PUSH22 0xC6CDDC51EE46E58C6D5AD315F2732A0CDE088EEF3CE6 SWAP7 SWAP7 OR SWAP3 0xE2 0xA7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "94:863:0:-;;;;;;;;" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "17000", + "executionCost": "94", + "totalCost": "17094" + }, + "internal": { + "isContract(address)": "infinite" + } + }, + "methodIdentifiers": {} + }, + "abi": [] +} \ No newline at end of file diff --git a/contracts/externals/artifacts/Address_metadata.json b/contracts/externals/artifacts/Address_metadata.json new file mode 100644 index 00000000..f1b64c66 --- /dev/null +++ b/contracts/externals/artifacts/Address_metadata.json @@ -0,0 +1,38 @@ +{ + "compiler": { + "version": "0.5.17+commit.d19bba13" + }, + "language": "Solidity", + "output": { + "abi": [], + "devdoc": { + "details": "Collection of functions related to the address type,", + "methods": {} + }, + "userdoc": { + "methods": {} + } + }, + "settings": { + "compilationTarget": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": "Address" + }, + "evmVersion": "istanbul", + "libraries": {}, + "optimizer": { + "enabled": true, + "runs": 200 + }, + "remappings": [] + }, + "sources": { + "localhost/../../../../../System/Volumes/Data/Users/riccardopersiani/Monolith/workspace/contracts/contracts/externals/Address.sol": { + "keccak256": "0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1", + "urls": [ + "bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf", + "dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3" + ] + } + }, + "version": 1 +} \ No newline at end of file diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index c248138f..9404b5dc 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea2646970667358221220a83e8e1f4b9b93698333e312f33f67cb7dca2a9e7cfa3e1ff861b77b196d466664736f6c634300060c0033" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102843803806102848339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021f806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea26469706673582212204a5c6f4facf4ad8ce6ee34ef9ff378337a84701edc00890a0c10fb3c1dcf9fb264736f6c634300060c0033" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index b3617e00..2eaf987b 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_privileged\",\"type\":\"bool\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"InitializedDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"SetMonolith2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"SetPersonal2FA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedDailyLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_nextReset\",\"type\":\"uint256\"}],\"name\":\"UpdatedAvailableDailyLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dailyLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executePrivilegedRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit_\",\"type\":\"uint256\"}],\"name\":\"initializeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"monolith2FA\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"personal2FA\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"privileged\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setMonolith2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_p2FA\",\"type\":\"address\"}],\"name\":\"setPersonal2FA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitDailyLimitUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b50615a27806200008a6000396000f3fe6080604052600436106102ae5760003560e01c80637b580e7511610175578063cbd2ac68116100dc578063d251fefc11610095578063e61c51ca1161006f578063e61c51ca14610eae578063f36febda14610ed8578063f421764814610f11578063f8b2cb4f14610f8c576102ae565b8063d251fefc14610e5a578063de212bf314610e84578063e2b4ce9714610e99576102ae565b8063cbd2ac6814610d19578063cccdc55614610d43578063cd7958dd14610d58578063ce0b5bd514610e06578063ced99cce14610e30578063cf0a866b14610e45576102ae565b8063aaf1fc621161012e578063aaf1fc6214610aee578063ad95580b14610b9f578063b242e53414610bb4578063be40ba7914610bef578063beabacc814610c04578063c1e559a314610c47576102ae565b80637b580e75146109ec5780637d73b23114610a1f5780637fd004fa14610a34578063877337b014610aaf5780638da5cb5b14610ac457806390e690c714610ad9576102ae565b8063458d07f2116102195780635adc02ab116101d25780635adc02ab146108985780636137d670146108c257806369efdfc01461093d5780636c37a7e614610998578063715018a6146109c2578063747c31d6146109d7576102ae565b8063458d07f21461072c57806345b12efc1461075657806346efe0ed1461076b57806347b55a9d1461083d57806347d125af146108525780634d9aa24814610883576102ae565b806326d05ab21161026b57806326d05ab214610566578063294f40251461057b57806332531c3c146105e05780633a43199f146106135780633b8252fa1461063f5780633f579f4214610666576102ae565b806301ffc9a7146102b3578063100f23fd146102fb5780631127b57e146103275780631626ba7e146103b157806320c13b0b146104865780632121dc7514610551575b600080fd5b3480156102bf57600080fd5b506102e7600480360360208110156102d657600080fd5b50356001600160e01b031916610fbf565b604080519115158252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b5035610fd9565b005b34801561033357600080fd5b5061033c611179565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561037657818101518382015260200161035e565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103bd57600080fd5b50610469600480360360408110156103d457600080fd5b81359190810190604081016020820135600160201b8111156103f557600080fd5b82018360208201111561040757600080fd5b803590602001918460018302840111600160201b8311171561042857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061119a945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561049257600080fd5b50610469600480360360408110156104a957600080fd5b810190602081018135600160201b8111156104c357600080fd5b8201836020820111156104d557600080fd5b803590602001918460018302840111600160201b831117156104f657600080fd5b919390929091602081019035600160201b81111561051357600080fd5b82018360208201111561052557600080fd5b803590602001918460018302840111600160201b8311171561054657600080fd5b509092509050611209565b34801561055d57600080fd5b506102e76112e0565b34801561057257600080fd5b506102e76112f1565b34801561058757600080fd5b506105906112fa565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105cc5781810151838201526020016105b4565b505050509050019250505060405180910390f35b3480156105ec57600080fd5b506102e76004803603602081101561060357600080fd5b50356001600160a01b031661135c565b6103256004803603604081101561062957600080fd5b506001600160a01b038135169060200135611371565b34801561064b57600080fd5b50610654611590565b60408051918252519081900360200190f35b34801561067257600080fd5b5061033c6004803603606081101561068957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156106b857600080fd5b8201836020820111156106ca57600080fd5b803590602001918460018302840111600160201b831117156106eb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611596945050505050565b34801561073857600080fd5b506103256004803603602081101561074f57600080fd5b5035611aac565b34801561076257600080fd5b50610654611b93565b34801561077757600080fd5b506103256004803603606081101561078e57600080fd5b81359190810190604081016020820135600160201b8111156107af57600080fd5b8201836020820111156107c157600080fd5b803590602001918460018302840111600160201b831117156107e257600080fd5b919390929091602081019035600160201b8111156107ff57600080fd5b82018360208201111561081157600080fd5b803590602001918460018302840111600160201b8311171561083257600080fd5b509092509050611bb1565b34801561084957600080fd5b50610590611c21565b34801561085e57600080fd5b50610867611c81565b604080516001600160a01b039092168252519081900360200190f35b34801561088f57600080fd5b50610654611c90565b3480156108a457600080fd5b50610325600480360360208110156108bb57600080fd5b5035611c96565b3480156108ce57600080fd5b50610325600480360360208110156108e557600080fd5b810190602081018135600160201b8111156108ff57600080fd5b82018360208201111561091157600080fd5b803590602001918460208302840111600160201b8311171561093257600080fd5b509092509050611fbd565b34801561094957600080fd5b50610325600480360360e081101561096057600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356121e4565b3480156109a457600080fd5b50610325600480360360208110156109bb57600080fd5b50356122c0565b3480156109ce57600080fd5b50610325612434565b3480156109e357600080fd5b5061065461252f565b3480156109f857600080fd5b5061032560048036036020811015610a0f57600080fd5b50356001600160a01b0316612535565b348015610a2b57600080fd5b50610867612700565b348015610a4057600080fd5b5061032560048036036020811015610a5757600080fd5b810190602081018135600160201b811115610a7157600080fd5b820183602082011115610a8357600080fd5b803590602001918460208302840111600160201b83111715610aa457600080fd5b50909250905061270f565b348015610abb57600080fd5b50610654612a52565b348015610ad057600080fd5b50610867612a58565b348015610ae557600080fd5b50610325612a67565b348015610afa57600080fd5b5061032560048036036020811015610b1157600080fd5b810190602081018135600160201b811115610b2b57600080fd5b820183602082011115610b3d57600080fd5b803590602001918460018302840111600160201b83111715610b5e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612ac1945050505050565b348015610bab57600080fd5b50610325612be8565b348015610bc057600080fd5b5061032560048036036040811015610bd757600080fd5b506001600160a01b0381351690602001351515612cef565b348015610bfb57600080fd5b506102e7612ea6565b348015610c1057600080fd5b5061032560048036036060811015610c2757600080fd5b506001600160a01b03813581169160208101359091169060400135612eb5565b348015610c5357600080fd5b5061032560048036036060811015610c6a57600080fd5b81359190810190604081016020820135600160201b811115610c8b57600080fd5b820183602082011115610c9d57600080fd5b803590602001918460018302840111600160201b83111715610cbe57600080fd5b919390929091602081019035600160201b811115610cdb57600080fd5b820183602082011115610ced57600080fd5b803590602001918460018302840111600160201b83111715610d0e57600080fd5b509092509050613041565b348015610d2557600080fd5b5061032560048036036020811015610d3c57600080fd5b50356130f8565b348015610d4f57600080fd5b506106546134df565b348015610d6457600080fd5b5061065460048036036020811015610d7b57600080fd5b810190602081018135600160201b811115610d9557600080fd5b820183602082011115610da757600080fd5b803590602001918460208302840111600160201b83111715610dc857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506134e5945050505050565b348015610e1257600080fd5b5061032560048036036020811015610e2957600080fd5b503561353f565b348015610e3c57600080fd5b506102e76136e3565b348015610e5157600080fd5b506102e76136f3565b348015610e6657600080fd5b5061086760048036036020811015610e7d57600080fd5b5035613703565b348015610e9057600080fd5b506102e761372a565b348015610ea557600080fd5b50610654613738565b348015610eba57600080fd5b5061032560048036036020811015610ed157600080fd5b503561373e565b348015610ee457600080fd5b5061065460048036036040811015610efb57600080fd5b506001600160a01b0381351690602001356138c8565b348015610f1d57600080fd5b5061032560048036036020811015610f3457600080fd5b810190602081018135600160201b811115610f4e57600080fd5b820183602082011115610f6057600080fd5b803590602001918460208302840111600160201b83111715610f8157600080fd5b509092509050613a3f565b348015610f9857600080fd5b5061065460048036036020811015610faf57600080fd5b50356001600160a01b0316613d92565b6001600160e01b031981166301ffc9a760e01b145b919050565b610fe233613d9d565b80610ff15750610ff133613db1565b611036576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16611085576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6110e860398054806020026020016040519081016040528092919081815260200182805480156110de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c0575b50505050506134e5565b81146111255760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b6111316039600061571a565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806111a78484613ded565b90506111b281613d9d565b6111f7576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611280945086935089915088908190840183828082843760009201919091525061119a92505050565b6001600160e01b031916146112cc576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561135257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611334575b5050505050905090565b60376020526000908152604090205460ff1681565b61137a33613d9d565b8061138457503330145b6113c9576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6113d282613fd8565b611418576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061142483836138c8565b905061142f81613ff2565b600061143c60425461408e565b90506001600160a01b038416156114d5576114616001600160a01b03851682856141e1565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156114b857600080fd5b505af11580156114cc573d6000803e3d6000fd5b50505050611546565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561152c57600080fd5b505af1158015611540573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b603f5490565b60606115a133613d9d565b806115b057506115b033613db1565b6115f5576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff161580156116285750603554600160a81b900460ff16155b1561164757600061163a6000856138c8565b905061164581613ff2565b505b611659846001600160a01b03166142f9565b80156116695750611669846142ff565b156118515760008061167b8685614319565b6001600160a01b038216600090815260376020526040902054919350915060ff161580156116b35750603554600160a81b900460ff16155b156116d15760006116c487836138c8565b90506116cf81613ff2565b505b6116e46001600160a01b0387168561441a565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f8151811061171757fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156117a9578181015183820152602001611791565b50505050905090810190601f1680156117d65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156118095781810151838201526020016117f1565b50505050905090810190601f1680156118365780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611aa5915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106118905780518252601f199092019160209182019101611871565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146118f2576040519150601f19603f3d011682016040523d82523d6000602084013e6118f7565b606091505b50915091508181906119875760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561194c578181015183820152602001611934565b50505050905090810190601f1680156119795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611a035781810151838201526020016119eb565b50505050905090810190601f168015611a305780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a63578181015183820152602001611a4b565b50505050905090810190601f168015611a905780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b611ab533613d9d565b80611abf57503330145b611b04576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611b5c57603e54811015611b4e57603e81905560408054815183815260208101919091528151600080516020615896833981519152929181900390910190a15b611b57816144cb565b611b90565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611ba85750603d546112ee565b50603e546112ee565b611bba3361450e565b611c0b576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b611c1a85858585856000614567565b5050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611352576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611334575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160b01b900460ff1615611cf557611cb13361450e565b611cf0576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b611d3e565b6036546001600160a01b03163314611d3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b603b5460ff16611d8d576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611dee60398054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b8114611e2b5760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b60005b603954811015611f12576037600060398381548110611e4957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611f0a5760016037600060398481548110611e8857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603980546038919083908110611ece57fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611e2e565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b03168152602001806020018281038252838181548152602001915080548015611f9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f77575b5050935050505060405180910390a1611fb06039600061571a565b50603b805460ff19169055565b611fc633613d9d565b80611fd057503330145b612015576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156120305750603b54610100900460ff16155b612081576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c697374207375626d697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166120da576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061211e576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61212a603a8383615738565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d19285928592612199928591859182918501908490808284376000920191909152506134e592505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806121fd57506121fd6147af565b8061220b575060005460ff16155b6122465760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015612271576000805460ff1961ff0019909116610100171660011790555b6122796147b5565b61228286614869565b61228b84614937565b61229588886149e4565b61229f8286614b43565b604283905580156122b6576000805461ff00191690555b5050505050505050565b603554600160b01b900460ff161561231f576122db3361450e565b61231a576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b612368565b6036546001600160a01b031633146123685760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b80603f54146123a85760405162461bcd60e51b81526004018080602001828103825260258152602001806159276025913960400191505060405180910390fd5b603d5481116123e85760405162461bcd60e51b81526004018080602001828103825260288152602001806157d06028913960400191505060405180910390fd5b603e8190556123fa4262015180614ca5565b6040818155603e548151908152602081019290925280516000805160206158968339815191529281900390910190a1611b90603f546144cb565b61243d33613d9d565b612484576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166124e2576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61253e33613d9d565b612585576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6001600160a01b0381166125e0576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b0382811691161415612639576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b038116301415612697576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60b01b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b61271833613d9d565b8061272257503330145b612767576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156127825750603b54610100900460ff16155b6127d3576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c697374207375626d697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156128ef5761282c82828151811061281f57fe5b6020026020010151613d9d565b15612877576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061288e57fe5b60200260200101516001600160a01b031614156128e7576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612807565b50603b5462010000900460ff16612949576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8161298d576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61299960398484615738565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612a06928591859182918501908490808284376000920191909152506134e592505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612a7033613d9d565b612ab7576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612abf614cff565b565b612aca33613d9d565b80612ad95750612ad933613db1565b612b1e576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156122b657612b41866054614d47565b888601805160148201516034909201805193995060609190911c96509094509092509050612b7a6054612b748785614ca5565b90614ca5565b945086851115612bc1576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612bd757506040805160208101909152600081525b612be2848483611596565b50612b2e565b612bf133613d9d565b612c38576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160b01b900460ff1615612c97576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60b01b1916600160b01b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612cf833613d9d565b612d3f576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612d9d576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612de25760405162461bcd60e51b815260040180806020018281038252602381526020018061594c6023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612e3b57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b612ebe33613d9d565b80612ec857503330145b612f0d576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080612f4a576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612f95576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff16158015612fc85750603554600160a81b900460ff16155b15612fe6576000612fd984846138c8565b9050612fe481613ff2565b505b612ff1848484614d89565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160b01b900460ff16156130a05761305c3361450e565b61309b576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b6130e9565b6036546001600160a01b031633146130e95760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b611c1a85858585856001614567565b603554600160b01b900460ff1615613157576131133361450e565b613152576040805162461bcd60e51b815260206004820152601c60248201526000805160206157f8833981519152604482015290519081900360640190fd5b6131a0565b6036546001600160a01b031633146131a05760405162461bcd60e51b81526004018080602001828103825260228152602001806158186022913960400191505060405180910390fd5b603b54610100900460ff166131f4576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613255603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b81146132925760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b60005b603a548110156134335760376000603a83815481106132b057fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161561342b57600060376000603a84815481106132f057fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b603854613334906001614d47565b8110156133fc57603a828154811061334857fe5b600091825260209091200154603880546001600160a01b03909216918390811061336e57fe5b6000918252602090912001546001600160a01b031614156133f45760388054600019810190811061339b57fe5b600091825260209091200154603880546001600160a01b0390921691839081106133c157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506133fc565b600101613326565b50603880548061340857fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101613295565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b031681526020018060200182810382528381815481526020019150805480156134b657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613498575b5050935050505060405180910390a16134d1603a600061571a565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b83811015613518578181015183820152602001613500565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61354833613d9d565b80613557575061355733613db1565b61359c576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff166135f0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613651603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134e5565b811461368e5760405162461bcd60e51b81526004018080602001828103825260238152602001806159996023913960400191505060405180910390fd5b61369a603a600061571a565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b603554600160b01b900460ff1681565b6038818154811061371057fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b808061377b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b61378433613d9d565b80613793575061379333613db1565b6137d8576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b814711613825576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b61382e82613ff2565b613836612a58565b6001600160a01b03166108fc839081150290604051600060405180830381858888f1935050505015801561386e573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613899612a58565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b60006138d2614dc3565b6001600160a01b0316836001600160a01b031614156138f2575080611203565b816001600160a01b0384161561398157600080600061391087614e39565b505050935093509350508061392c576000945050505050611203565b81613967576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b61397b836139758885614fc2565b9061501b565b93505050505b600080600061398e61505d565b50505093509350935050806139e0576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613a26576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613a34826139758686614fc2565b979650505050505050565b613a4833613d9d565b80613a5257503330145b613a97576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613ba657613ae382828151811061281f57fe5b15613b2e576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613b4557fe5b60200260200101516001600160a01b03161415613b9e576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613acb565b50603b5462010000900460ff1615613bfd576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613cee5760376000858584818110613c1857fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613ce657600160376000868685818110613c5457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613ca957fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613c00565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613d7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613d60575b5050935050505060405180910390a1505050565b6000611203826151cc565b6035546001600160a01b0390811691161490565b603554600090600160b01b900460ff1615613dd657613dcf8261450e565b9050610fd4565b506036546001600160a01b03828116911614610fd4565b60008151604114613e45576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613eb65760405162461bcd60e51b81526004018080602001828103825260228152602001806158746022913960400191505060405180910390fd5b8060ff16601b14158015613ece57508060ff16601c14155b15613f0a5760405162461bcd60e51b81526004018080602001828103825260228152602001806158b66022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613f66573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613fce576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613fe483614e39565b509098975050505050505050565b613ffa61525d565b80603e541015614051576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e5461405e9082614d47565b603e819055604080548151928352602083015280516000805160206158968339815191529281900390910190a150565b6033546000906001600160a01b03166140ee576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561413a57600080fd5b505afa15801561414e573d6000803e3d6000fd5b505050506040513d602081101561416457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156141af57600080fd5b505afa1580156141c3573d6000803e3d6000fd5b505050506040513d60208110156141d957600080fd5b505192915050565b801580614267575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561423957600080fd5b505afa15801561424d573d6000803e3d6000fd5b505050506040513d602081101561426357600080fd5b5051155b6142a25760405162461bcd60e51b81526004018080602001828103825260368152602001806159bc6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142f490849061441a565b505050565b3b151590565b60008061430b83614e39565b509198975050505050505050565b600080614327603c5461408e565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561439257818101518382015260200161437a565b50505050905090810190601f1680156143bf5780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156143dc57600080fd5b505afa1580156143f0573d6000803e3d6000fd5b505050506040513d604081101561440657600080fd5b508051602090910151909590945092505050565b606061446f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166152aa9092919063ffffffff16565b8051909150156142f45780806020019051602081101561448e57600080fd5b50516142f45760405162461bcd60e51b815260040180806020018281038252602a81526020018061596f602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b600061451b60345461408e565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156141af57600080fd5b600046905060006145de82308a8a8a60405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b81526014018481526020018383808284378083019250505095505050505050604051602081830303815290604052805190602001206152b9565b9050631626ba7e60e01b6001600160e01b0319166146328287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119a92505050565b6001600160e01b0319161461467e576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b60415488146146c0576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b6146c8614cff565b6035805460ff60a81b1916600160a81b85151502179055604080516020601f890181900481028201810190925287815261471c918990899081908401838280828437600092019190915250612ac192505050565b6035805460ff60a81b191690556040805184151591810191909152606080825281018790527f7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec908890889086908060208101608082018686808284376000838201819052601f909101601f1916909201948503909252835250506040805191829003019350915050a15050505050505050565b303b1590565b600054610100900460ff16806147ce57506147ce6147af565b806147dc575060005460ff16155b6148175760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614842576000805460ff1961ff0019909116610100171660011790555b6035805460ff60b01b1916600160b01b1790558015611b90576000805461ff001916905550565b600054610100900460ff168061488257506148826147af565b80614890575060005460ff16155b6148cb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff161580156148f6576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561492157603380546001600160a01b0319166001600160a01b0384161790555b8015614933576000805461ff00191690555b5050565b600054610100900460ff168061495057506149506147af565b8061495e575060005460ff16155b6149995760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff161580156149c4576000805460ff1961ff0019909116610100171660011790555b81156149215760348290558015614933576000805461ff00191690555050565b600054610100900460ff16806149fd57506149fd6147af565b80614a0b575060005460ff16155b614a465760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614a71576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614ae957604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a180156142f4576000805461ff0019169055505050565b600054610100900460ff1680614b5c5750614b5c6147af565b80614b6a575060005460ff16155b614ba55760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015614bd0576000805460ff1961ff0019909116610100171660011790555b614bd98261530a565b6000614be361505d565b505050505091505060008111614c30576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614c4f4262015180614ca5565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a1505080156142f4576000805461ff0019169055505050565b600082820183811015611aa5576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b6000611aa583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506153b7565b6001600160a01b038216614daf57614daa6001600160a01b03841682615411565b6142f4565b6142f46001600160a01b03831684836154f6565b6000614dd0603c5461408e565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614e0857600080fd5b505afa158015614e1c573d6000803e3d6000fd5b505050506040513d6020811015614e3257600080fd5b5051905090565b6060600080600080600080614e4f603c5461408e565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614e9b57600080fd5b505afa158015614eaf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614ed857600080fd5b8101908080516040519392919084600160201b821115614ef757600080fd5b908301906020820185811115614f0c57600080fd5b8251600160201b811182820188101715614f2557600080fd5b82525081516020918201929091019080838360005b83811015614f52578181015183820152602001614f3a565b50505050905090810190601f168015614f7f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614fd157506000611203565b82820282848281614fde57fe5b0414611aa55760405162461bcd60e51b81526004018080602001828103825260218152602001806158d86021913960400191505060405180910390fd5b6000611aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615548565b6060600080600080600080615073603c5461408e565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150ab57600080fd5b505afa1580156150bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156150e857600080fd5b8101908080516040519392919084600160201b82111561510757600080fd5b90830190602082018581111561511c57600080fd5b8251600160201b81118282018810171561513557600080fd5b82525081516020918201929091019080838360005b8381101561516257818101518382015260200161514a565b50505050905090810190601f16801561518f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561525657604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561522357600080fd5b505afa158015615237573d6000803e3d6000fd5b505050506040513d602081101561524d57600080fd5b50519050610fd4565b5047610fd4565b604054421115612abf576152744262015180614ca5565b6040818155603d54603e8190558151908152602081019290925280516000805160206158968339815191529281900390910190a1565b60606112d884846000856155ad565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600054610100900460ff168061532357506153236147af565b80615331575060005460ff16155b61536c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158f9602e913960400191505060405180910390fd5b600054610100900460ff16158015615397576000805460ff1961ff0019909116610100171660011790555b811561492157603c8290558015614933576000805461ff00191690555050565b600081848411156154095760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b505050900390565b80471015615466576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146154b1576040519150601f19603f3d011682016040523d82523d6000602084013e6154b6565b606091505b50509050806142f45760405162461bcd60e51b815260040180806020018281038252603a81526020018061583a603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526142f490849061441a565b600081836155975760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561194c578181015183820152602001611934565b5060008385816155a357fe5b0495945050505050565b60606155b8856142f9565b615609576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106156485780518252601f199092019160209182019101615629565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146156aa576040519150601f19603f3d011682016040523d82523d6000602084013e6156af565b606091505b509150915081156156c35791506112d89050565b8051156156d35780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561194c578181015183820152602001611934565b5080546000825590600052602060002090810190611b90919061579b565b82805482825590600052602060002090810192821561578b579160200282015b8281111561578b5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615758565b506157979291506157b0565b5090565b5b80821115615797576000815560010161579c565b5b808211156157975780546001600160a01b03191681556001016157b156fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f742061204d6f6e6f6c697468203246410000000073656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220e7c96d63fd860408376617582f91969f7703fe4b44eeb94558e79caf74b0561464736f6c634300060c0033" +var WalletBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396603c5534801561007957600080fd5b506159fe806200008a6000396000f3fe6080604052600436106102ae5760003560e01c80637b580e7511610175578063cbd2ac68116100dc578063d251fefc11610095578063e61c51ca1161006f578063e61c51ca14610eae578063f36febda14610ed8578063f421764814610f11578063f8b2cb4f14610f8c576102ae565b8063d251fefc14610e5a578063de212bf314610e84578063e2b4ce9714610e99576102ae565b8063cbd2ac6814610d19578063cccdc55614610d43578063cd7958dd14610d58578063ce0b5bd514610e06578063ced99cce14610e30578063cf0a866b14610e45576102ae565b8063aaf1fc621161012e578063aaf1fc6214610aee578063ad95580b14610b9f578063b242e53414610bb4578063be40ba7914610bef578063beabacc814610c04578063c1e559a314610c47576102ae565b80637b580e75146109ec5780637d73b23114610a1f5780637fd004fa14610a34578063877337b014610aaf5780638da5cb5b14610ac457806390e690c714610ad9576102ae565b8063458d07f2116102195780635adc02ab116101d25780635adc02ab146108985780636137d670146108c257806369efdfc01461093d5780636c37a7e614610998578063715018a6146109c2578063747c31d6146109d7576102ae565b8063458d07f21461072c57806345b12efc1461075657806346efe0ed1461076b57806347b55a9d1461083d57806347d125af146108525780634d9aa24814610883576102ae565b806326d05ab21161026b57806326d05ab214610566578063294f40251461057b57806332531c3c146105e05780633a43199f146106135780633b8252fa1461063f5780633f579f4214610666576102ae565b806301ffc9a7146102b3578063100f23fd146102fb5780631127b57e146103275780631626ba7e146103b157806320c13b0b146104865780632121dc7514610551575b600080fd5b3480156102bf57600080fd5b506102e7600480360360208110156102d657600080fd5b50356001600160e01b031916610fbf565b604080519115158252519081900360200190f35b34801561030757600080fd5b506103256004803603602081101561031e57600080fd5b5035610fd9565b005b34801561033357600080fd5b5061033c611179565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561037657818101518382015260200161035e565b50505050905090810190601f1680156103a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103bd57600080fd5b50610469600480360360408110156103d457600080fd5b81359190810190604081016020820135600160201b8111156103f557600080fd5b82018360208201111561040757600080fd5b803590602001918460018302840111600160201b8311171561042857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061119a945050505050565b604080516001600160e01b03199092168252519081900360200190f35b34801561049257600080fd5b50610469600480360360408110156104a957600080fd5b810190602081018135600160201b8111156104c357600080fd5b8201836020820111156104d557600080fd5b803590602001918460018302840111600160201b831117156104f657600080fd5b919390929091602081019035600160201b81111561051357600080fd5b82018360208201111561052557600080fd5b803590602001918460018302840111600160201b8311171561054657600080fd5b509092509050611209565b34801561055d57600080fd5b506102e76112e0565b34801561057257600080fd5b506102e76112f1565b34801561058757600080fd5b506105906112fa565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105cc5781810151838201526020016105b4565b505050509050019250505060405180910390f35b3480156105ec57600080fd5b506102e76004803603602081101561060357600080fd5b50356001600160a01b031661135c565b6103256004803603604081101561062957600080fd5b506001600160a01b038135169060200135611371565b34801561064b57600080fd5b50610654611582565b60408051918252519081900360200190f35b34801561067257600080fd5b5061033c6004803603606081101561068957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156106b857600080fd5b8201836020820111156106ca57600080fd5b803590602001918460018302840111600160201b831117156106eb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611588945050505050565b34801561073857600080fd5b506103256004803603602081101561074f57600080fd5b5035611a80565b34801561076257600080fd5b50610654611b67565b34801561077757600080fd5b506103256004803603606081101561078e57600080fd5b81359190810190604081016020820135600160201b8111156107af57600080fd5b8201836020820111156107c157600080fd5b803590602001918460018302840111600160201b831117156107e257600080fd5b919390929091602081019035600160201b8111156107ff57600080fd5b82018360208201111561081157600080fd5b803590602001918460018302840111600160201b8311171561083257600080fd5b509092509050611b85565b34801561084957600080fd5b50610590611bf5565b34801561085e57600080fd5b50610867611c55565b604080516001600160a01b039092168252519081900360200190f35b34801561088f57600080fd5b50610654611c64565b3480156108a457600080fd5b50610325600480360360208110156108bb57600080fd5b5035611c6a565b3480156108ce57600080fd5b50610325600480360360208110156108e557600080fd5b810190602081018135600160201b8111156108ff57600080fd5b82018360208201111561091157600080fd5b803590602001918460208302840111600160201b8311171561093257600080fd5b509092509050611f91565b34801561094957600080fd5b50610325600480360360e081101561096057600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060808101359060a08101359060c001356121b8565b3480156109a457600080fd5b50610325600480360360208110156109bb57600080fd5b5035612294565b3480156109ce57600080fd5b50610325612408565b3480156109e357600080fd5b50610654612503565b3480156109f857600080fd5b5061032560048036036020811015610a0f57600080fd5b50356001600160a01b0316612509565b348015610a2b57600080fd5b506108676126d4565b348015610a4057600080fd5b5061032560048036036020811015610a5757600080fd5b810190602081018135600160201b811115610a7157600080fd5b820183602082011115610a8357600080fd5b803590602001918460208302840111600160201b83111715610aa457600080fd5b5090925090506126e3565b348015610abb57600080fd5b50610654612a26565b348015610ad057600080fd5b50610867612a2c565b348015610ae557600080fd5b50610325612a3b565b348015610afa57600080fd5b5061032560048036036020811015610b1157600080fd5b810190602081018135600160201b811115610b2b57600080fd5b820183602082011115610b3d57600080fd5b803590602001918460018302840111600160201b83111715610b5e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612a95945050505050565b348015610bab57600080fd5b50610325612bbc565b348015610bc057600080fd5b5061032560048036036040811015610bd757600080fd5b506001600160a01b0381351690602001351515612cc3565b348015610bfb57600080fd5b506102e7612e7a565b348015610c1057600080fd5b5061032560048036036060811015610c2757600080fd5b506001600160a01b03813581169160208101359091169060400135612e89565b348015610c5357600080fd5b5061032560048036036060811015610c6a57600080fd5b81359190810190604081016020820135600160201b811115610c8b57600080fd5b820183602082011115610c9d57600080fd5b803590602001918460018302840111600160201b83111715610cbe57600080fd5b919390929091602081019035600160201b811115610cdb57600080fd5b820183602082011115610ced57600080fd5b803590602001918460018302840111600160201b83111715610d0e57600080fd5b509092509050613006565b348015610d2557600080fd5b5061032560048036036020811015610d3c57600080fd5b50356130bd565b348015610d4f57600080fd5b506106546134a4565b348015610d6457600080fd5b5061065460048036036020811015610d7b57600080fd5b810190602081018135600160201b811115610d9557600080fd5b820183602082011115610da757600080fd5b803590602001918460208302840111600160201b83111715610dc857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506134aa945050505050565b348015610e1257600080fd5b5061032560048036036020811015610e2957600080fd5b5035613504565b348015610e3c57600080fd5b506102e76136a8565b348015610e5157600080fd5b506102e76136b8565b348015610e6657600080fd5b5061086760048036036020811015610e7d57600080fd5b50356136c8565b348015610e9057600080fd5b506102e76136ef565b348015610ea557600080fd5b506106546136fd565b348015610eba57600080fd5b5061032560048036036020811015610ed157600080fd5b5035613703565b348015610ee457600080fd5b5061065460048036036040811015610efb57600080fd5b506001600160a01b03813516906020013561388f565b348015610f1d57600080fd5b5061032560048036036020811015610f3457600080fd5b810190602081018135600160201b811115610f4e57600080fd5b820183602082011115610f6057600080fd5b803590602001918460208302840111600160201b83111715610f8157600080fd5b509092509050613a06565b348015610f9857600080fd5b5061065460048036036020811015610faf57600080fd5b50356001600160a01b0316613d59565b6001600160e01b031981166301ffc9a760e01b145b919050565b610fe233613d64565b80610ff15750610ff133613d78565b611036576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b5460ff16611085576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6110e860398054806020026020016040519081016040528092919081815260200182805480156110de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110c0575b50505050506134aa565b81146111255760405162461bcd60e51b81526004018080602001828103825260238152602001806159706023913960400191505060405180910390fd5b611131603960006156f1565b603b805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b60405180604001604052806005815260200164332e342e3160d81b81525081565b6000806111a78484613db4565b90506111b281613d64565b6111f7576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b9550611280945086935089915088908190840183828082843760009201919091525061119a92505050565b6001600160e01b031916146112cc576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b90505b949350505050565b603554600160a01b900460ff165b90565b603b5460ff1681565b6060603a80548060200260200160405190810160405280929190818152602001828054801561135257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611334575b5050505050905090565b60376020526000908152604090205460ff1681565b61137a33613d64565b8061138457503330145b6113c9576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b6113d282613f9f565b611418576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b6114228282613fb9565b600061142f604254614065565b90506001600160a01b038316156114c8576114546001600160a01b03841682846141b8565b806001600160a01b0316631b3c96b484846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156114ab57600080fd5b505af11580156114bf573d6000803e3d6000fd5b50505050611539565b806001600160a01b0316631b3c96b48385856040518463ffffffff1660e01b815260040180836001600160a01b03168152602001828152602001925050506000604051808303818588803b15801561151f57600080fd5b505af1158015611533573d6000803e3d6000fd5b50505050505b604080516001600160a01b03851681526020810184905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a1505050565b603f5490565b606061159333613d64565b806115a257506115a233613d78565b6115e7576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff1615801561161a5750603554600160a81b900460ff16155b1561162a5761162a600084613fb9565b61163c846001600160a01b03166142d0565b801561164c575061164c846142d6565b156118255760008061165e86856142f0565b6001600160a01b038216600090815260376020526040902054919350915060ff161580156116965750603554600160a81b900460ff16155b156116a5576116a58682613fb9565b6116b86001600160a01b038716856143f1565b604080516020808252818301909252606091602082018180368337019050509050600160f81b81601f815181106116eb57fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561177d578181015183820152602001611765565b50505050905090810190601f1680156117aa5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156117dd5781810151838201526020016117c5565b50505050905090810190601f16801561180a5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250611a79915050565b60006060856001600160a01b031685856040518082805190602001908083835b602083106118645780518252601f199092019160209182019101611845565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146118c6576040519150601f19603f3d011682016040523d82523d6000602084013e6118cb565b606091505b509150915081819061195b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611920578181015183820152602001611908565b50505050905090810190601f16801561194d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156119d75781810151838201526020016119bf565b50505050905090810190601f168015611a045780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611a37578181015183820152602001611a1f565b50505050905090810190601f168015611a645780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b611a8933613d64565b80611a9357503330145b611ad8576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603f819055603d548111611b3057603e54811015611b2257603e8190556040805481518381526020810191909152815160008051602061586d833981519152929181900390910190a15b611b2b816144a2565b611b64565b6040805182815290517f065b9ade648867cf901516060dd7a78fad8ab1aec5eb80ee57acbb30badf86ec9181900360200190a15b50565b6000604054421115611b7c5750603d546112ee565b50603e546112ee565b611b8e336144e5565b611bdf576040805162461bcd60e51b815260206004820152601860248201527f73656e646572206973206e6f7420636f6e74726f6c6c65720000000000000000604482015290519081900360640190fd5b611bee8585858585600061453e565b5050505050565b60606039805480602002602001604051908101604052809291908181526020018280548015611352576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611334575050505050905090565b6036546001600160a01b031681565b603d5490565b603554600160b01b900460ff1615611cc957611c85336144e5565b611cc4576040805162461bcd60e51b815260206004820152601c60248201526000805160206157cf833981519152604482015290519081900360640190fd5b611d12565b6036546001600160a01b03163314611d125760405162461bcd60e51b81526004018080602001828103825260228152602001806157ef6022913960400191505060405180910390fd5b603b5460ff16611d61576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b611dc260398054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134aa565b8114611dff5760405162461bcd60e51b81526004018080602001828103825260238152602001806159706023913960400191505060405180910390fd5b60005b603954811015611ee6576037600060398381548110611e1d57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611ede5760016037600060398481548110611e5c57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055603980546038919083908110611ea257fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101611e02565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33603960405180836001600160a01b03168152602001806020018281038252838181548152602001915080548015611f6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f4b575b5050935050505060405180910390a1611f84603960006156f1565b50603b805460ff19169055565b611f9a33613d64565b80611fa457503330145b611fe9576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156120045750603b54610100900460ff16155b612055576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c697374207375626d697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b603b5462010000900460ff166120ae576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b806120f2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b6120fe603a838361570f565b50603b805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d1928592859261216d928591859182918501908490808284376000920191909152506134aa92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b600054610100900460ff16806121d157506121d1614786565b806121df575060005460ff16155b61221a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158d0602e913960400191505060405180910390fd5b600054610100900460ff16158015612245576000805460ff1961ff0019909116610100171660011790555b61224d61478c565b61225686614840565b61225f8461490e565b61226988886149bb565b6122738286614b1a565b6042839055801561228a576000805461ff00191690555b5050505050505050565b603554600160b01b900460ff16156122f3576122af336144e5565b6122ee576040805162461bcd60e51b815260206004820152601c60248201526000805160206157cf833981519152604482015290519081900360640190fd5b61233c565b6036546001600160a01b0316331461233c5760405162461bcd60e51b81526004018080602001828103825260228152602001806157ef6022913960400191505060405180910390fd5b80603f541461237c5760405162461bcd60e51b81526004018080602001828103825260258152602001806158fe6025913960400191505060405180910390fd5b603d5481116123bc5760405162461bcd60e51b81526004018080602001828103825260288152602001806157a76028913960400191505060405180910390fd5b603e8190556123ce4262015180614c7c565b6040818155603e5481519081526020810192909252805160008051602061586d8339815191529281900390910190a1611b64603f546144a2565b61241133613d64565b612458576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff166124b6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b603580546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b60425490565b61251233613d64565b612559576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6001600160a01b0381166125b4576040805162461bcd60e51b815260206004820152601960248201527f3246412063616e6e6f742062652073657420746f207a65726f00000000000000604482015290519081900360640190fd5b6036546001600160a01b038281169116141561260d576040805162461bcd60e51b81526020600482015260136024820152721859191c995cdcc8185b1c9958591e481cd95d606a1b604482015290519081900360640190fd5b6001600160a01b03811630141561266b576040805162461bcd60e51b815260206004820181905260248201527f3246412063616e6e6f74206265207468652077616c6c65742061646472657373604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b0383169081179091556035805460ff60b01b1916905560408051338152602081019290925280517f33635a1d7938fa110d60d48b4ecbefc4afcc07e782ca013f11de948ee7949d1c9281900390910190a150565b6033546001600160a01b031690565b6126ec33613d64565b806126f657503330145b61273b576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b603b5460ff161580156127565750603b54610100900460ff16155b6127a7576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c697374207375626d697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156128c3576128008282815181106127f357fe5b6020026020010151613d64565b1561284b576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b031682828151811061286257fe5b60200260200101516001600160a01b031614156128bb576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b6001016127db565b50603b5462010000900460ff1661291d576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612961576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61296d6039848461570f565b50603b805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c92869286926129da928591859182918501908490808284376000920191909152506134aa92505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b603c5490565b6035546001600160a01b031690565b612a4433613d64565b612a8b576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b612a93614cd6565b565b612a9e33613d64565b80612aad5750612aad33613d78565b612af2576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b8051602080820191906000808060605b8685101561228a57612b15866054614d1e565b888601805160148201516034909201805193995060609190911c96509094509092509050612b4e6054612b488785614c7c565b90614c7c565b945086851115612b95576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b81612bab57506040805160208101909152600081525b612bb6848483611588565b50612b02565b612bc533613d64565b612c0c576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160b01b900460ff1615612c6b576040805162461bcd60e51b815260206004820152601b60248201527f6d6f6e6f6c69746832464120616c726561647920656e61626c65640000000000604482015290519081900360640190fd5b6035805460ff60b01b1916600160b01b179055603680546001600160a01b03191690556040805133815290517fea0cce48757f6b222f91e711f59a5a8ec05a3ed3c0a4328fe36cb48f31a869699181900360200190a1565b612ccc33613d64565b612d13576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b603554600160a01b900460ff16612d71576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b038216612db65760405162461bcd60e51b81526004018080602001828103825260238152602001806159236023913960400191505060405180910390fd5b6035805460ff60a01b1916600160a01b8315150217905580612e0f57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b603554604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150603580546001600160a01b0319166001600160a01b0392909216919091179055565b603b5462010000900460ff1681565b612e9233613d64565b80612e9c57503330145b612ee1576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8080612f1e576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416612f69576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b03841660009081526037602052604090205460ff16158015612f9c5750603554600160a81b900460ff16155b15612fab57612fab8383613fb9565b612fb6848484614d60565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b603554600160b01b900460ff161561306557613021336144e5565b613060576040805162461bcd60e51b815260206004820152601c60248201526000805160206157cf833981519152604482015290519081900360640190fd5b6130ae565b6036546001600160a01b031633146130ae5760405162461bcd60e51b81526004018080602001828103825260228152602001806157ef6022913960400191505060405180910390fd5b611bee8585858585600161453e565b603554600160b01b900460ff161561311c576130d8336144e5565b613117576040805162461bcd60e51b815260206004820152601c60248201526000805160206157cf833981519152604482015290519081900360640190fd5b613165565b6036546001600160a01b031633146131655760405162461bcd60e51b81526004018080602001828103825260228152602001806157ef6022913960400191505060405180910390fd5b603b54610100900460ff166131b9576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61321a603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134aa565b81146132575760405162461bcd60e51b81526004018080602001828103825260238152602001806159706023913960400191505060405180910390fd5b60005b603a548110156133f85760376000603a838154811061327557fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156133f057600060376000603a84815481106132b557fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6038546132f9906001614d1e565b8110156133c157603a828154811061330d57fe5b600091825260209091200154603880546001600160a01b03909216918390811061333357fe5b6000918252602090912001546001600160a01b031614156133b95760388054600019810190811061336057fe5b600091825260209091200154603880546001600160a01b03909216918390811061338657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506133c1565b6001016132eb565b5060388054806133cd57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b60010161325a565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33603a60405180836001600160a01b0316815260200180602001828103825283818154815260200191508054801561347b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161345d575b5050935050505060405180910390a1613496603a60006156f1565b50603b805461ff0019169055565b60415481565b60008160405160200180828051906020019060200280838360005b838110156134dd5781810151838201526020016134c5565b50505050905001915050604051602081830303815290604052805190602001209050919050565b61350d33613d64565b8061351c575061351c33613d78565b613561576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b603b54610100900460ff166135b5576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613616603a8054806020026020016040519081016040528092919081815260200182805480156110de576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116110c05750505050506134aa565b81146136535760405162461bcd60e51b81526004018080602001828103825260238152602001806159706023913960400191505060405180910390fd5b61365f603a60006156f1565b603b805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b603554600160a81b900460ff1681565b603554600160b01b900460ff1681565b603881815481106136d557fe5b6000918252602090912001546001600160a01b0316905081565b603b54610100900460ff1681565b60345490565b8080613740576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b61374933613d64565b80613758575061375833613d78565b61379d576040805162461bcd60e51b81526020600482015260116024820152706f6e6c79206f776e6572206f722032464160781b604482015290519081900360640190fd5b8147116137ea576040805162461bcd60e51b815260206004820152601660248201527518985b185b98d9481b9bdd081cdd59999a58da595b9d60521b604482015290519081900360640190fd5b6137f5600083613fb9565b6137fd612a2c565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613835573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613860612a2c565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b6000613899614d9a565b6001600160a01b0316836001600160a01b031614156138b9575080611203565b816001600160a01b038416156139485760008060006138d787614e10565b50505093509350935050806138f3576000945050505050611203565b8161392e576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6139428361393c8885614f99565b90614ff2565b93505050505b6000806000613955615034565b50505093509350935050806139a7576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b816139ed576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b6139fb8261393c8686614f99565b979650505050505050565b613a0f33613d64565b80613a1957503330145b613a5e576040805162461bcd60e51b81526020600482015260116024820152702737ba1037bbb732b91037b91039b2b63360791b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015613b6d57613aaa8282815181106127f357fe5b15613af5576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110613b0c57fe5b60200260200101516001600160a01b03161415613b65576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101613a92565b50603b5462010000900460ff1615613bc4576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b82811015613cb55760376000858584818110613bdf57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16613cad57600160376000868685818110613c1b57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506038848483818110613c7057fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b600101613bc7565b50603b805462ff0000191662010000179055604080513380825260208201838152603880549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a9492939092909190606083019084908015613d4557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613d27575b5050935050505060405180910390a1505050565b6000611203826151a3565b6035546001600160a01b0390811691161490565b603554600090600160b01b900460ff1615613d9d57613d96826144e5565b9050610fd4565b506036546001600160a01b03828116911614610fd4565b60008151604114613e0c576040805162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613e7d5760405162461bcd60e51b815260040180806020018281038252602281526020018061584b6022913960400191505060405180910390fd5b8060ff16601b14158015613e9557508060ff16601c14155b15613ed15760405162461bcd60e51b815260040180806020018281038252602281526020018061588d6022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613f2d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613f95576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9695505050505050565b600080613fab83614e10565b509098975050505050505050565b6000613fc5838361388f565b9050613fcf615234565b80603e541015614026576040805162461bcd60e51b815260206004820152601d60248201527f617661696c61626c6520736d616c6c6572207468616e20616d6f756e74000000604482015290519081900360640190fd5b603e546140339082614d1e565b603e8190556040805481519283526020830152805160008051602061586d8339815191529281900390910190a1505050565b6033546000906001600160a01b03166140c5576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561411157600080fd5b505afa158015614125573d6000803e3d6000fd5b505050506040513d602081101561413b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561418657600080fd5b505afa15801561419a573d6000803e3d6000fd5b505050506040513d60208110156141b057600080fd5b505192915050565b80158061423e575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561421057600080fd5b505afa158015614224573d6000803e3d6000fd5b505050506040513d602081101561423a57600080fd5b5051155b6142795760405162461bcd60e51b81526004018080602001828103825260368152602001806159936036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142cb9084906143f1565b505050565b3b151590565b6000806142e283614e10565b509198975050505050505050565b6000806142fe603c54614065565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614369578181015183820152602001614351565b50505050905090810190601f1680156143965780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156143b357600080fd5b505afa1580156143c7573d6000803e3d6000fd5b505050506040513d60408110156143dd57600080fd5b508051602090910151909590945092505050565b6060614446826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166152819092919063ffffffff16565b8051909150156142cb5780806020019051602081101561446557600080fd5b50516142cb5760405162461bcd60e51b815260040180806020018281038252602a815260200180615946602a913960400191505060405180910390fd5b603d819055604080513381526020810183905281517f2a843f39f13315c4c1a9bc53a1a32162858f272f3b2d0c656f409431251b6768929181900390910190a150565b60006144f2603454614065565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561418657600080fd5b600046905060006145b582308a8a8a60405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120615290565b9050631626ba7e60e01b6001600160e01b0319166146098287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061119a92505050565b6001600160e01b03191614614655576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6041548814614697576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b61469f614cd6565b6035805460ff60a81b1916600160a81b85151502179055604080516020601f89018190048102820181019092528781526146f3918990899081908401838280828437600092019190915250612a9592505050565b6035805460ff60a81b191690556040805184151591810191909152606080825281018790527f7126c7fa27a233346a02741f8f1389f231dcf840ff4f32bd9d506fe85cabc7ec908890889086908060208101608082018686808284376000838201819052601f909101601f1916909201948503909252835250506040805191829003019350915050a15050505050505050565b303b1590565b600054610100900460ff16806147a557506147a5614786565b806147b3575060005460ff16155b6147ee5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158d0602e913960400191505060405180910390fd5b600054610100900460ff16158015614819576000805460ff1961ff0019909116610100171660011790555b6035805460ff60b01b1916600160b01b1790558015611b64576000805461ff001916905550565b600054610100900460ff16806148595750614859614786565b80614867575060005460ff16155b6148a25760405162461bcd60e51b815260040180806020018281038252602e8152602001806158d0602e913960400191505060405180910390fd5b600054610100900460ff161580156148cd576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216156148f857603380546001600160a01b0319166001600160a01b0384161790555b801561490a576000805461ff00191690555b5050565b600054610100900460ff16806149275750614927614786565b80614935575060005460ff16155b6149705760405162461bcd60e51b815260040180806020018281038252602e8152602001806158d0602e913960400191505060405180910390fd5b600054610100900460ff1615801561499b576000805460ff1961ff0019909116610100171660011790555b81156148f8576034829055801561490a576000805461ff00191690555050565b600054610100900460ff16806149d457506149d4614786565b806149e2575060005460ff16155b614a1d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158d0602e913960400191505060405180910390fd5b600054610100900460ff16158015614a48576000805460ff1961ff0019909116610100171660011790555b603580546001600160a01b0319166001600160a01b0385161760ff60a01b1916600160a01b8415158102919091179182905560ff910416614ac057604080516001600160a01b038516815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038516602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a180156142cb576000805461ff0019169055505050565b600054610100900460ff1680614b335750614b33614786565b80614b41575060005460ff16155b614b7c5760405162461bcd60e51b815260040180806020018281038252602e8152602001806158d0602e913960400191505060405180910390fd5b600054610100900460ff16158015614ba7576000805460ff1961ff0019909116610100171660011790555b614bb0826152e1565b6000614bba615034565b505050505091505060008111614c07576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b838102603d819055603e819055603f819055614c264262015180614c7c565b60408181558051838152602081019290925280517f47dcdfb9e867032608a011a7b2438466389c6eba4d51bf520b402083def29caa9281900390910190a1505080156142cb576000805461ff0019169055505050565b600082820183811015611a79576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604180546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b6000611a7983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061538e565b6001600160a01b038216614d8657614d816001600160a01b038416826153e8565b6142cb565b6142cb6001600160a01b03831684836154cd565b6000614da7603c54614065565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b158015614ddf57600080fd5b505afa158015614df3573d6000803e3d6000fd5b505050506040513d6020811015614e0957600080fd5b5051905090565b6060600080600080600080614e26603c54614065565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060006040518083038186803b158015614e7257600080fd5b505afa158015614e86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614eaf57600080fd5b8101908080516040519392919084600160201b821115614ece57600080fd5b908301906020820185811115614ee357600080fd5b8251600160201b811182820188101715614efc57600080fd5b82525081516020918201929091019080838360005b83811015614f29578181015183820152602001614f11565b50505050905090810190601f168015614f565780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614fa857506000611203565b82820282848281614fb557fe5b0414611a795760405162461bcd60e51b81526004018080602001828103825260218152602001806158af6021913960400191505060405180910390fd5b6000611a7983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061551f565b606060008060008060008061504a603c54614065565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561508257600080fd5b505afa158015615096573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156150bf57600080fd5b8101908080516040519392919084600160201b8211156150de57600080fd5b9083019060208201858111156150f357600080fd5b8251600160201b81118282018810171561510c57600080fd5b82525081516020918201929091019080838360005b83811015615139578181015183820152602001615121565b50505050905090810190601f1680156151665780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60006001600160a01b0382161561522d57604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156151fa57600080fd5b505afa15801561520e573d6000803e3d6000fd5b505050506040513d602081101561522457600080fd5b50519050610fd4565b5047610fd4565b604054421115612a935761524b4262015180614c7c565b6040818155603d54603e81905581519081526020810192909252805160008051602061586d8339815191529281900390910190a1565b60606112d88484600085615584565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600054610100900460ff16806152fa57506152fa614786565b80615308575060005460ff16155b6153435760405162461bcd60e51b815260040180806020018281038252602e8152602001806158d0602e913960400191505060405180910390fd5b600054610100900460ff1615801561536e576000805460ff1961ff0019909116610100171660011790555b81156148f857603c829055801561490a576000805461ff00191690555050565b600081848411156153e05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611920578181015183820152602001611908565b505050900390565b8047101561543d576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114615488576040519150601f19603f3d011682016040523d82523d6000602084013e61548d565b606091505b50509050806142cb5760405162461bcd60e51b815260040180806020018281038252603a815260200180615811603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526142cb9084906143f1565b6000818361556e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611920578181015183820152602001611908565b50600083858161557a57fe5b0495945050505050565b606061558f856142d0565b6155e0576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061561f5780518252601f199092019160209182019101615600565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615681576040519150601f19603f3d011682016040523d82523d6000602084013e615686565b606091505b5091509150811561569a5791506112d89050565b8051156156aa5780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315611920578181015183820152602001611908565b5080546000825590600052602060002090810190611b649190615772565b828054828255906000526020600020908101928215615762579160200282015b828111156157625781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019061572f565b5061576e929150615787565b5090565b5b8082111561576e5760008155600101615773565b5b8082111561576e5780546001600160a01b031916815560010161578856fe6c696d69742073686f756c642062652067726561746572207468616e2063757272656e74206f6e6573656e646572206973206e6f742061204d6f6e6f6c697468203246410000000073656e646572206973206e6f7420706572736f6e616c20324641206163636f756e74416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d6179206861766520726576657274656445434453413a20696e76616c6964207369676e6174757265202773272076616c7565b8d7171194501073e2d8151eeccf1398143c5df9acfb9868d0539a256164f6ca45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564636f6e6669726d6564206f72207375626d6974746564206c696d6974206d69736d617463686f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212204c4ffb8de5092033d34df73cdb860fa1e32c45c45284a1c3f6f2851997b0944764736f6c634300060c0033" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index d56c43d7..9ffbaae5 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedDailyLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_dailyLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220d5eb27adc4c1c2d9abef80d913a4e8536cb5bae07761a5f4e2dea4a7e075845064736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" +var WalletDeployerBin = "0x6080604052603380546001600160a01b0319166e0c2e074ec69a0dfb2997ba6c7d2e1e1790557f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976034557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860355534801561007957600080fd5b50604051610c39380380610c398339818101604052606081101561009c57600080fd5b50805160208201516040909201519091906100b6836100d3565b6100bf826101a1565b80156100cb5760358190555b505050610254565b600054610100900460ff16806100ec57506100ec61024e565b806100fa575060005460ff16155b6101355760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff16158015610160576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382161561018b57603380546001600160a01b0319166001600160a01b0384161790555b801561019d576000805461ff00191690555b5050565b600054610100900460ff16806101ba57506101ba61024e565b806101c8575060005460ff16155b6102035760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0b602e913960400191505060405180910390fd5b600054610100900460ff1615801561022e576000805460ff1961ff0019909116610100171660011790555b811561018b576034829055801561019d576000805461ff00191690555050565b303b1590565b6109a8806102636000396000f3fe6080604052600436106100555760003560e01c80634b316f7a1461005a5780637d73b231146100fc57806380a12c0e1461012d578063a6ede3d414610160578063c8cc2fc214610187578063e2b4ce97146101ba575b600080fd5b6100fa600480360360c081101561007057600080fd5b6001600160a01b038235811692602081013590911691604082013515159160608101351515916080820135919081019060c0810160a08201356401000000008111156100bb57600080fd5b8201836020820111156100cd57600080fd5b803590602001918460208302840111640100000000831117156100ef57600080fd5b5090925090506101cf565b005b34801561010857600080fd5b506101116105d6565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116004803603602081101561015057600080fd5b50356001600160a01b03166105e5565b34801561016c57600080fd5b50610175610600565b60408051918252519081900360200190f35b34801561019357600080fd5b506100fa600480360360208110156101aa57600080fd5b50356001600160a01b0316610606565b3480156101c657600080fd5b5061017561079f565b6101d8336107a5565b610224576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6001600160a01b03878116600090815260366020526040902054161561027b5760405162461bcd60e51b81526004018080602001828103825260218152602001806109526021913960400191505060405180910390fd5b866001600160a01b0316866001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102be57600080fd5b505afa1580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50516001600160a01b031614610336576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610343603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561037d57600080fd5b505af1158015610391573d6000803e3d6000fd5b505050506040513d60208110156103a757600080fd5b5051604080516001600160a01b038084168252808b1660208301528b168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b03888116600090815260366020526040902080546001600160a01b031916918316919091179055851561049157806001600160a01b031663458d07f2856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561047857600080fd5b505af115801561048c573d6000803e3d6000fd5b505050505b841561052557806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038a8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b5050505060003411156105cc576040516001600160a01b038916903480156108fc02916000818181858888f193505050501580156105ca573d6000803e3d6000fd5b505b5050505050505050565b6033546001600160a01b031690565b6036602052600090815260409020546001600160a01b031681565b60355481565b61060f336107a5565b61065b576040805162461bcd60e51b815260206004820152601860248201527739b2b73232b91034b9903737ba1031b7b73a3937b63632b960411b604482015290519081900360640190fd5b6000610668603554610830565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050506040513d60208110156106cc57600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526036602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050505050565b60345490565b60006107b2603454610830565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b505192915050565b6033546000906001600160a01b0316610890576040805162461bcd60e51b815260206004820152601d60248201527f454e535265736f6c7661626c65206e6f7420696e697469616c697a6564000000604482015290519081900360640190fd5b60335460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156107fe57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a2646970667358221220143bda47f002828f19e8988403297f8f3148bc0b4ae33c1b1173be57cdf11bb264736f6c634300060c0033436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { diff --git a/tools/slither/slither.db.json b/tools/slither/slither.db.json index cc3bb31b..ed719454 100644 --- a/tools/slither/slither.db.json +++ b/tools/slither/slither.db.json @@ -1 +1 @@ -[{"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 29650, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 30581, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [661], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 29650, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 31159, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 29650, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#641-671) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#661)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#670)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L641-L671) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L661)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L670)\n", "id": "dc79bda57b1d0cdcd5c8657131a5eccab005c95e3f1fc86cc7e2340f38f68a34", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 33081, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [704], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 33303, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [710], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#677-720):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#704)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#710)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L677-L720):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L704)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L710)\n", "id": "50754dd812db3ca6dd35b6d500ed4db24b1d78fd7b6b80325c1bcd758f3993db", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 33402, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [714], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 33540, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [717], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#677-720):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#714)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#717)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L677-L720):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L714)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L717)\n", "id": "f2f83e08b57057f2dc084cf764f3b5f9460c98000e5e15ce276e33a38e65be20", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 25795, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [569], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 25860, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [570], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25937, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [572], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25937, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [572], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 26020, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#559-576):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#569)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#570)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#572)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#572)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#575)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L559-L576):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L569)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L570)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L572)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L572)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L575)\n", "id": "486bed9158bc158014fe19c800bbfd03e74f74d53f7019aa3ced16edba18de67", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 16124, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16201, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [355], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 16124, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#354-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#355)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L354-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L355)\n", "id": "0696c9feb27ea80b0d2a54688f7c55dd81ee7981ff949bf1ec1b68506a847843", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17987, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [398, 399, 400, 401, 402, 403, 404, 405, 406], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 18047, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [399], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17987, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [398, 399, 400, 401, 402, 403, 404, 405, 406], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#398-406) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#399)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L398-L406) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L399)\n", "id": "e99dd80222e1b947ff487d4815ef0e6deab603ea426134bf1862259885e75008", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 26455, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 26879, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [591], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 26455, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 26952, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [593], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 26455, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#585-594):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#591)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#593)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L585-L594):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L591)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L593)\n", "id": "895af948f3aac2b9d21696aa7a843268174a39e8a414844bbb7023ecc38aab17", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 29701, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [637], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 30279, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [646], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#617-647) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#637)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#646)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L617-L647) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L637)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L646)\n", "id": "d2c5cb2e5931b94801f80e0acda602945a4805c0108658fe67563a7fe48aded6", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 22307, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 22431, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#472-495):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#491)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#494)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L472-L495):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L491)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L494)\n", "id": "a8d590b479be6c7a5486a15f28b79f1ed4179ef88e16654bee70e3c4840270ac", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 32172, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [680], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 32394, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [686], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#680)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#686)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L680)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L686)\n", "id": "986bd40ae5ee76690167450a3abc2d74f1b560e57f7e039af9cad3096385c0c0", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 32493, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [690], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 32631, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [693], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#690)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#693)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L690)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L693)\n", "id": "8f6b4e2d1a128b9a63a81a91967f7d3da642da1f7a2815bccf113f8d39a02a9b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 24914, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [545], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 24979, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [546], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 25139, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [551], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#535-552):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#545)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#546)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#551)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L535-L552):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L545)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L546)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L551)\n", "id": "5d28da95b1f9bdee832322c8cd183afab1c956d24a6b3f2e67483c85a87fe6a5", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 15923, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [351], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#350-356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#351)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L350-L356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L351)\n", "id": "b4af7a01c46ddfad3f8ece6253cd966f942fd4d9ad2c113e52c50bdbdbbb6f3a", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 17769, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#394-402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#395)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L394-L402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L395)\n", "id": "7771a43c1a0d9f6b6d925730066b4c66691ecd08134f1be5f9f612a08bef77bc", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 25998, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [567], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 26071, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [569], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#561-570):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#567)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#569)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L561-L570):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L567)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L569)\n", "id": "5194d4fef8f9d6c33183161cb43e75b034bdafb4203afb207216d0b2cb034a17", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3520, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [85], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#85)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L85)\n", "id": "8f154ecfc5824e3b987314d0a2f5e529d003edef50be40d366b15f160d857e1c", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3451, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [83], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#83)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L83)\n", "id": "b29cdb51c11b209fa6cbae7acc6eaa1139948abf695c7c82dd1dc272cd236cd2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 4041, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4149, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "23ece0d6e57608c6c57add03c9e58044d357633c8cdab578e48ffcc72f8dd86a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4843, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "37e5ae3fd03f04bd9c52830c372f415d3a32cab48338b06a9d00c56d48f3804b", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4880, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "791c5f8285dd95ff5dce366ad41ab8ab3c4a8d5d8f5298264ad1051199435b2c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 27982, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [583], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 28560, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [592], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#563-593) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#583)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#592)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L563-L593) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L583)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L592)\n", "id": "1e0b234747807fbb5245169570b2b7fb9f07f78ac1afa8e1be592afb1191efcd", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20581, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [437], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20705, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [440], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#418-441):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#437)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#440)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L418-L441):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L437)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L440)\n", "id": "3a35fb3bee7858d2e5e2dfe41b98c442fc8f9866db6fcf679aac1497dd758db8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30453, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [626], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30675, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [632], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#626)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#632)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L626)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L632)\n", "id": "c1a1c741ecef7d0ec1b421c1549e41a3c5de2e1da3390cb741cba8a00040234a", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30774, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [636], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30912, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [639], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#636)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#639)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L636)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L639)\n", "id": "74afa6312b4eb14d15de176af037db957fb7df33a76e2c3d7a6117ac1a1fb22c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23188, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23253, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23413, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [497], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#481-498):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#491)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#492)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#497)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L481-L498):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L491)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L492)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L497)\n", "id": "77327b12f5a5c8c7964e978adbdcbe01bc6a937432ecfb766b117fde7232da34", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14216, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [298], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#297-303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#298)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L297-L303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L298)\n", "id": "73f9c07c94114fae31ba92b92e7ca095093697dfe1a61ce7761e9a46eaf02c44", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16062, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [342], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#341-349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#342)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L341-L349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L342)\n", "id": "1c842f34e2052c53a5f20027dbc7c11424de7477557713fb885cc7a53b3665e8", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24279, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [513], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24352, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [515], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#507-516):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#513)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#515)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L507-L516):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L513)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L515)\n", "id": "5a28f20b36e8e9aae8526a3b185ba0f8347ba516247b1ee9cbead8908ff836a7", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 28593, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [604], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 29171, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [613], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#588-614) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#604)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#613)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L588-L614) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L604)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L613)\n", "id": "9bda81c6a396bc6e5af3ccdc7c781eb7305c37a94bf87db3c9ccbfeb5ae5b3eb", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 12438, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265], "starting_column": 52, "ending_column": 79}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeDailyLimit", "source_mapping": {"start": 12391, "length": 321, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265, 266, 267, 268, 269, 270, 271, 272], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeDailyLimit(uint256,bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#265) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L265) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "e5bb81054c4147256bf3aaebe7ef7cdeedd5bd5182d32dc08afd644b0f9e0116", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 29569, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [622], "starting_column": 9, "ending_column": 23}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.executeTransaction(address,uint256,bytes)._value (../../contracts/wallet.sol#622) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.executeTransaction(address,uint256,bytes)._value](../../contracts/wallet.sol#L622) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "90bfcd468a576433295dc979256339d182d72c064d955766641725f26a929749", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 19206, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419], "starting_column": 24, "ending_column": 38}, "type_specific_fields": {"parent": {"type": "function", "name": "isNotZero", "source_mapping": {"start": 19187, "length": 94, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419, 420, 421, 422], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "isNotZero(uint256)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.isNotZero(uint256)._value (../../contracts/wallet.sol#419) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.isNotZero(uint256)._value](../../contracts/wallet.sol#L419) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "1e335a6c51143516ea2aacb63ebfae14b068c26f1fc55aea86d9a1530cbc2bf0", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20593, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [448], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20717, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [451], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#429-452):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#448)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#451)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L429-L452):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L448)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L451)\n", "id": "ec79e84527eef8746fa9ec647fc99366159eb2609e4213975bce953241a24c1b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30827, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [644], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 31049, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [650], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#644)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#650)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L644)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L650)\n", "id": "ecf8400146003c4b7b7e44c18ee6d86249787a89215657c598f9e3cb3b72319b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 31148, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 31286, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [657], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#654)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#657)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L654)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L657)\n", "id": "b5a1c394bd5406139a742ec93ae05a64d17d4f50fa4e3bd83ce7efa4d1a53cfa", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23200, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [502], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23265, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [503], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23425, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#492-509):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#502)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#503)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#508)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L492-L509):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L502)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L503)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L508)\n", "id": "3b788cb6a30b3f641772c7e7583a408a1bd7f85564b33648492384ce610931e7", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 13877, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L301)\n", "id": "a93d679b54ec36d932fcff36e21d2a580a2dfd6cdf2a38b039c9235b67baccb9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 16104, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#352-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#353)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L352-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L353)\n", "id": "e35a8401ff8c2805f39f87764799163bcf46e67e24e9f0dc1ca8af147616ab94", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24291, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [524], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24364, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [526], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#518-527):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#524)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#526)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L518-L527):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L524)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L526)\n", "id": "c43efe0610e655bec1cdb32e08e234a043a3b790995b3136e9ab21e91d3bc687", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] +[{"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 19085, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13359, "length": 7308, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 20016, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [438], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 19085, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13359, "length": 7308, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 20594, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [447], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 19085, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13359, "length": 7308, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "DailyLimit.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#418-448) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#438)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#447)\n", "markdown": "[DailyLimit.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L418-L448) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L438)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L447)\n", "id": "f40faf2700f534059defe259e8627a48dd6e0f0d288bafb6f89a662f8ea787e7", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31801, "length": 2052, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 33225, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [707], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31801, "length": 2052, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 33447, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [713], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31801, "length": 2052, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#681-723):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#707)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#713)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L681-L723):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L707)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L713)\n", "id": "8453d0706ad989ef07d26cdc993033917481e491ec89832eba2ada8aeb0dd3d1", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31801, "length": 2052, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 33546, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [717], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31801, "length": 2052, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 33684, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [720], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31801, "length": 2052, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#681-723):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#717)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#720)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L681-L723):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L717)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L720)\n", "id": "d8ca9a157cec65bf3352b7e8109dd1cb629cc1191ede329af03ad52432d5fac2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 27430, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 27975, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [609], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 27430, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 28040, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [610], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 27430, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 28117, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [612], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 27430, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 28117, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [612], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 27430, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 28200, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [615], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 27430, "length": 814, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#601-616):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#609)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#610)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#612)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#612)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#615)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L601-L616):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L609)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L610)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L612)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L612)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L615)\n", "id": "54a8145e68e5147ebc3f87a97ea37211e0e83ca2c91fd2c90f4a9993471b83dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 16392, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [357, 358, 359, 360, 361, 362, 363], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13359, "length": 7308, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16469, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [358], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 16392, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [357, 358, 359, 360, 361, 362, 363], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13359, "length": 7308, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#357-363) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#358)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L357-L363) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L358)\n", "id": "660fda8b7d535d122bf2223e01c008fc561366cd91a3f68221fc1f25594fd13f", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 18413, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [404, 405, 406, 407, 408, 409, 410, 411, 412], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13359, "length": 7308, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 18473, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [405], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 18413, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [404, 405, 406, 407, 408, 409, 410, 411, 412], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13359, "length": 7308, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#404-412) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#405)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L404-L412) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L405)\n", "id": "517d45376082070aa1bb674bb080e7031fd63aaa2b4afb1e981afdb45615a8ce", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 28635, "length": 562, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [625, 626, 627, 628, 629, 630, 631, 632, 633, 634], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 29071, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [631], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 28635, "length": 562, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [625, 626, 627, 628, 629, 630, 631, 632, 633, 634], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 29144, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [633], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 28635, "length": 562, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [625, 626, 627, 628, 629, 630, 631, 632, 633, 634], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 20767, "length": 14756, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#625-634):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#631)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#633)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L625-L634):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L631)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L633)\n", "id": "a15a08257262bf8c9f08f0ee0567a79da2f2c0fc313ec788a520c10ea0ddc7db", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 29650, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 30581, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [661], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 29650, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 31159, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 29650, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#641-671) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#661)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#670)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L641-L671) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L661)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L670)\n", "id": "dc79bda57b1d0cdcd5c8657131a5eccab005c95e3f1fc86cc7e2340f38f68a34", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 33081, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [704], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 33303, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [710], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#677-720):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#704)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#710)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L677-L720):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L704)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L710)\n", "id": "50754dd812db3ca6dd35b6d500ed4db24b1d78fd7b6b80325c1bcd758f3993db", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 33402, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [714], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 33540, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [717], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 31490, "length": 2219, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#677-720):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#714)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#717)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L677-L720):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L714)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L717)\n", "id": "f2f83e08b57057f2dc084cf764f3b5f9460c98000e5e15ce276e33a38e65be20", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 25795, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [569], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 25860, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [570], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25937, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [572], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25937, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [572], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 26020, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 25125, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#559-576):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#569)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#570)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#572)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#572)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#575)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L559-L576):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L569)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L570)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L572)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L572)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L575)\n", "id": "486bed9158bc158014fe19c800bbfd03e74f74d53f7019aa3ced16edba18de67", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 16124, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16201, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [355], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 16124, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#354-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#355)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L354-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L355)\n", "id": "0696c9feb27ea80b0d2a54688f7c55dd81ee7981ff949bf1ec1b68506a847843", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17987, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [398, 399, 400, 401, 402, 403, 404, 405, 406], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 18047, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [399], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17987, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [398, 399, 400, 401, 402, 403, 404, 405, 406], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13356, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#398-406) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#399)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L398-L406) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L399)\n", "id": "e99dd80222e1b947ff487d4815ef0e6deab603ea426134bf1862259885e75008", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 26455, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 26879, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [591], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 26455, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 26952, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [593], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 26455, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [585, 586, 587, 588, 589, 590, 591, 592, 593, 594], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18462, "length": 17117, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#585-594):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#591)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#593)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L585-L594):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L591)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L593)\n", "id": "895af948f3aac2b9d21696aa7a843268174a39e8a414844bbb7023ecc38aab17", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 29701, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [637], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 30279, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [646], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 28770, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#617-647) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#637)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#646)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L617-L647) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L637)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L646)\n", "id": "d2c5cb2e5931b94801f80e0acda602945a4805c0108658fe67563a7fe48aded6", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 22307, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 22431, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 21354, "length": 1134, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#472-495):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#491)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#494)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L472-L495):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L491)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L494)\n", "id": "a8d590b479be6c7a5486a15f28b79f1ed4179ef88e16654bee70e3c4840270ac", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 32172, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [680], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 32394, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [686], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#680)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#686)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L680)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L686)\n", "id": "986bd40ae5ee76690167450a3abc2d74f1b560e57f7e039af9cad3096385c0c0", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 32493, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [690], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 32631, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [693], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 30610, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#653-696):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#690)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#693)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L653-L696):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L690)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L693)\n", "id": "8f6b4e2d1a128b9a63a81a91967f7d3da642da1f7a2815bccf113f8d39a02a9b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 24914, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [545], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 24979, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [546], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 25056, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [548], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 25139, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [551], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 24244, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#535-552):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#545)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#546)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#548)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#551)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L535-L552):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L545)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L546)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L548)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L551)\n", "id": "5d28da95b1f9bdee832322c8cd183afab1c956d24a6b3f2e67483c85a87fe6a5", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 15923, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [351], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 15846, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [350, 351, 352, 353, 354, 355, 356], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#350-356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#351)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L350-L356) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L351)\n", "id": "b4af7a01c46ddfad3f8ece6253cd966f942fd4d9ad2c113e52c50bdbdbbb6f3a", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 17769, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [395], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 17709, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [394, 395, 396, 397, 398, 399, 400, 401, 402], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 13078, "length": 5006, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#394-402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#395)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L394-L402) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L395)\n", "id": "7771a43c1a0d9f6b6d925730066b4c66691ecd08134f1be5f9f612a08bef77bc", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 25998, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [567], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 26071, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [569], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 25574, "length": 550, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [561, 562, 563, 564, 565, 566, 567, 568, 569, 570], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 18184, "length": 16471, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#561-570):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#567)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#569)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L561-L570):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L567)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L569)\n", "id": "5194d4fef8f9d6c33183161cb43e75b034bdafb4203afb207216d0b2cb034a17", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3520, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [85], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#85)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L85)\n", "id": "8f154ecfc5824e3b987314d0a2f5e529d003edef50be40d366b15f160d857e1c", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3357, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [82], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3451, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [83], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2899, "length": 1185, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3088, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[]) (../../contracts/walletDeployer.sol#71-101):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#82)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#83)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,uint256,address[])](../../contracts/walletDeployer.sol#L71-L101):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L82)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L83)\n", "id": "b29cdb51c11b209fa6cbae7acc6eaa1139948abf695c7c82dd1dc272cd236cd2", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 4041, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4149, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3907, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "23ece0d6e57608c6c57add03c9e58044d357633c8cdab578e48ffcc72f8dd86a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4843, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "37e5ae3fd03f04bd9c52830c372f415d3a32cab48338b06a9d00c56d48f3804b", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4388, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)", "source_mapping": {"start": 4481, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4880, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4275, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3649, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultDailyLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "791c5f8285dd95ff5dce366ad41ab8ab3c4a8d5d8f5298264ad1051199435b2c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 27982, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [583], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 28560, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [592], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27051, "length": 1580, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#563-593) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#583)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#592)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L563-L593) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L583)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L592)\n", "id": "1e0b234747807fbb5245169570b2b7fb9f07f78ac1afa8e1be592afb1191efcd", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20581, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [437], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20705, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [440], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19621, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#418-441):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#437)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#440)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L418-L441):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L437)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L440)\n", "id": "3a35fb3bee7858d2e5e2dfe41b98c442fc8f9866db6fcf679aac1497dd758db8", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30453, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [626], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 30675, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [632], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#626)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#632)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L626)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L632)\n", "id": "c1a1c741ecef7d0ec1b421c1549e41a3c5de2e1da3390cb741cba8a00040234a", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 30774, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [636], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 30912, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [639], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 28891, "length": 2190, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#599-642):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#636)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#639)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L599-L642):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L636)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L639)\n", "id": "74afa6312b4eb14d15de176af037db957fb7df33a76e2c3d7a6117ac1a1fb22c", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23188, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [491], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23253, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23330, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [494], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23413, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [497], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22518, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#481-498):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#491)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#492)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#494)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#497)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L481-L498):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L491)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L492)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L494)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L497)\n", "id": "77327b12f5a5c8c7964e978adbdcbe01bc6a937432ecfb766b117fde7232da34", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 14216, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [298], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 14139, "length": 197, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [297, 298, 299, 300, 301, 302, 303], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#297-303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#298)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L297-L303) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L298)\n", "id": "73f9c07c94114fae31ba92b92e7ca095093697dfe1a61ce7761e9a46eaf02c44", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _resetTimestamp", "source_mapping": {"start": 16062, "length": 21, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [342], "starting_column": 13, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16002, "length": 373, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [341, 342, 343, 344, 345, 346, 347, 348, 349], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11366, "length": 5011, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#341-349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _resetTimestamp (../../contracts/wallet.sol#342)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L341-L349) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _resetTimestamp](../../contracts/wallet.sol#L342)\n", "id": "1c842f34e2052c53a5f20027dbc7c11424de7477557713fb885cc7a53b3665e8", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24279, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [513], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24352, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [515], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23848, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [507, 508, 509, 510, 511, 512, 513, 514, 515, 516], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16477, "length": 16459, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#507-516):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#513)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#515)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L507-L516):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L513)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L515)\n", "id": "5a28f20b36e8e9aae8526a3b185ba0f8347ba516247b1ee9cbead8908ff836a7", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 28593, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [604], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 29171, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [613], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 27702, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#588-614) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#604)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#613)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L588-L614) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L604)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L613)\n", "id": "9bda81c6a396bc6e5af3ccdc7c781eb7305c37a94bf87db3c9ccbfeb5ae5b3eb", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 12438, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265], "starting_column": 52, "ending_column": 79}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeDailyLimit", "source_mapping": {"start": 12391, "length": 321, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [265, 266, 267, 268, 269, 270, 271, 272], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeDailyLimit(uint256,bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#265) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[DailyLimit._initializeDailyLimit(uint256,bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L265) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "e5bb81054c4147256bf3aaebe7ef7cdeedd5bd5182d32dc08afd644b0f9e0116", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 29569, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [622], "starting_column": 9, "ending_column": 23}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.executeTransaction(address,uint256,bytes)._value (../../contracts/wallet.sol#622) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.executeTransaction(address,uint256,bytes)._value](../../contracts/wallet.sol#L622) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "90bfcd468a576433295dc979256339d182d72c064d955766641725f26a929749", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "_value", "source_mapping": {"start": 19206, "length": 14, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419], "starting_column": 24, "ending_column": 38}, "type_specific_fields": {"parent": {"type": "function", "name": "isNotZero", "source_mapping": {"start": 19187, "length": 94, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [419, 420, 421, 422], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "isNotZero(uint256)"}}}}, {"type": "variable", "name": "_value", "source_mapping": {"start": 11639, "length": 22, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [251], "starting_column": 5, "ending_column": 27}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}}}], "description": "Wallet.isNotZero(uint256)._value (../../contracts/wallet.sol#419) shadows:\n\t- DailyLimit._value (../../contracts/wallet.sol#251) (state variable)\n", "markdown": "[Wallet.isNotZero(uint256)._value](../../contracts/wallet.sol#L419) shadows:\n\t- [DailyLimit._value](../../contracts/wallet.sol#L251) (state variable)\n", "id": "1e335a6c51143516ea2aacb63ebfae14b068c26f1fc55aea86d9a1530cbc2bf0", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 20593, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [448], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 20717, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [451], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 19633, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#429-452):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#448)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#451)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L429-L452):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L448)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L451)\n", "id": "ec79e84527eef8746fa9ec647fc99366159eb2609e4213975bce953241a24c1b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 30827, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [644], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 31049, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [650], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#644)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#650)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L644)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L650)\n", "id": "ecf8400146003c4b7b7e44c18ee6d86249787a89215657c598f9e3cb3b72319b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 31148, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 31286, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [657], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 29502, "length": 1953, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#620-660):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#654)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#657)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L620-L660):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L654)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L657)\n", "id": "b5a1c394bd5406139a742ec93ae05a64d17d4f50fa4e3bd83ce7efa4d1a53cfa", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 23200, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [502], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 23265, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [503], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 23342, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [505], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 23425, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 22530, "length": 939, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#492-509):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#502)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#503)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#505)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#508)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L492-L509):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L502)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L503)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L505)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L508)\n", "id": "3b788cb6a30b3f641772c7e7583a408a1bd7f85564b33648492384ce610931e7", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 13877, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [301], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "dailyLimitAvailable", "source_mapping": {"start": 13800, "length": 207, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [300, 301, 302, 303, 304, 305, 306], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "dailyLimitAvailable()"}}}}], "description": "DailyLimit.dailyLimitAvailable() (../../contracts/wallet.sol#300-306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#301)\n", "markdown": "[DailyLimit.dailyLimitAvailable()](../../contracts/wallet.sol#L300-L306) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L301)\n", "id": "a93d679b54ec36d932fcff36e21d2a580a2dfd6cdf2a38b039c9235b67baccb9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}, {"type": "node", "name": "now > _updateTimestamp.add(86400)", "source_mapping": {"start": 16104, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [353], "starting_column": 13, "ending_column": 49}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableDailyLimit", "source_mapping": {"start": 16044, "length": 343, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [352, 353, 354, 355, 356, 357, 358, 359, 360], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimit", "source_mapping": {"start": 11362, "length": 5027, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableDailyLimit()"}}}}], "description": "DailyLimit._updateAvailableDailyLimit() (../../contracts/wallet.sol#352-360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > _updateTimestamp.add(86400) (../../contracts/wallet.sol#353)\n", "markdown": "[DailyLimit._updateAvailableDailyLimit()](../../contracts/wallet.sol#L352-L360) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > _updateTimestamp.add(86400)](../../contracts/wallet.sol#L353)\n", "id": "e35a8401ff8c2805f39f87764799163bcf46e67e24e9f0dc1ca8af147616ab94", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 24291, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [524], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 24364, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [526], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 23860, "length": 557, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [518, 519, 520, 521, 522, 523, 524, 525, 526, 527], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 16489, "length": 16892, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#518-527):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#524)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#526)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L518-L527):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L524)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L526)\n", "id": "c43efe0610e655bec1cdb32e08e234a043a3b790995b3136e9ab21e91d3bc687", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 3733, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [90], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#90)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L90)\n", "id": "08c17d72e3fea63da74bc79489b737cb23dc6017f94d4adaf52125d413e35151", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "deployedWallets[_owner] = wallet", "source_mapping": {"start": 2379, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [61], "starting_column": 9, "ending_column": 41}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "deployedWallets"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tState variables written after the call(s):\n\t- deployedWallets[_owner] = wallet (../../contracts/walletDeployer.sol#61)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tState variables written after the call(s):\n\t- [deployedWallets[_owner] = wallet](../../contracts/walletDeployer.sol#L61)\n", "id": "f0b7aad2205303350c897f944ae44b598d3483a6c19a4266efe45905252cf95e", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 2239, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [58], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "DeployedWallet(wallet,_owner)", "source_mapping": {"start": 2333, "length": 35, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [59], "starting_column": 9, "ending_column": 44}, "type_specific_fields": {"parent": {"type": "function", "name": "deployWallet", "source_mapping": {"start": 2159, "length": 409, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [57, 58, 59, 60, 61, 62, 63, 64, 65], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "deployWallet(address)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.deployWallet(address) (../../contracts/walletDeployer.sol#57-65):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#58)\n\tEvent emitted after the call(s):\n\t- DeployedWallet(wallet,_owner) (../../contracts/walletDeployer.sol#59)\n", "markdown": "Reentrancy in [WalletDeployer.deployWallet(address)](../../contracts/walletDeployer.sol#L57-L65):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L58)\n\tEvent emitted after the call(s):\n\t- [DeployedWallet(wallet,_owner)](../../contracts/walletDeployer.sol#L59)\n", "id": "402373ea64c629a1e6a8492e757dbb4c9ae11b7e4687b3a69769d611ce299adb", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}, {"type": "node", "name": "wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()", "source_mapping": {"start": 3570, "length": 84, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [87], "starting_column": 9, "ending_column": 93}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "MigratedWallet(wallet,_oldWallet,_owner,msg.value)", "source_mapping": {"start": 3664, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [88], "starting_column": 9, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "function", "name": "migrateWallet", "source_mapping": {"start": 2976, "length": 1524, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[]) (../../contracts/walletDeployer.sol#72-112):\n\tExternal calls:\n\t- wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop() (../../contracts/walletDeployer.sol#87)\n\tEvent emitted after the call(s):\n\t- MigratedWallet(wallet,_oldWallet,_owner,msg.value) (../../contracts/walletDeployer.sol#88)\n", "markdown": "Reentrancy in [WalletDeployer.migrateWallet(address,address,bool,bool,bool,bool,uint256,uint256,uint256,address[])](../../contracts/walletDeployer.sol#L72-L112):\n\tExternal calls:\n\t- [wallet = IWalletCache(_ensResolve(walletCacheNode)).walletCachePop()](../../contracts/walletDeployer.sol#L87)\n\tEvent emitted after the call(s):\n\t- [MigratedWallet(wallet,_oldWallet,_owner,msg.value)](../../contracts/walletDeployer.sol#L88)\n", "id": "4a7fb4ad6d950016772175c04421bfb2683ec214fce6efed77598fd2843feae3", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletDeployer", "source_mapping": {"start": 998, "length": 3504, "filename_used": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_relative": "../../contracts/walletDeployer.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletDeployer.sol", "filename_short": "../../contracts/walletDeployer.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletDeployer.slitherConstructorVariables() (../../contracts/walletDeployer.sol#28-113) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletDeployer.slitherConstructorVariables()](../../contracts/walletDeployer.sol#L28-L113) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "f6fb64f21a2684f963798ca8643ba32f8b907a86dae7800a6403eaced385dbf2", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelist", "source_mapping": {"start": 1165, "length": 16184, "filename_used": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_relative": "../../contracts/tokenWhitelist.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/tokenWhitelist.sol", "filename_short": "../../contracts/tokenWhitelist.sol", "is_dependency": false, "lines": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "TokenWhitelist.slitherConstructorVariables() (../../contracts/tokenWhitelist.sol#30-389) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[TokenWhitelist.slitherConstructorVariables()](../../contracts/tokenWhitelist.sol#L30-L389) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "3ba51ca2fd1cb5bc5e3b3f4e806726b88ab00ee0c96ae77cea1fa201fbd9e8e1", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}, {"type": "node", "name": "cacheWallet()", "source_mapping": {"start": 3973, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [98], "starting_column": 13, "ending_column": 26}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.pop()", "source_mapping": {"start": 4081, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [102], "starting_column": 9, "ending_column": 28}, "type_specific_fields": {"parent": {"type": "function", "name": "walletCachePop", "source_mapping": {"start": 3839, "length": 292, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 105], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "walletCachePop()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.walletCachePop() (../../contracts/walletCache.sol#96-105):\n\tExternal calls:\n\t- cacheWallet() (../../contracts/walletCache.sol#98)\n\t\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.pop() (../../contracts/walletCache.sol#102)\n", "markdown": "Reentrancy in [WalletCache.walletCachePop()](../../contracts/walletCache.sol#L96-L105):\n\tExternal calls:\n\t- [cacheWallet()](../../contracts/walletCache.sol#L98)\n\t\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.pop()](../../contracts/walletCache.sol#L102)\n", "id": "3ffb1bc3f21fab1b8590a3173be21b2f5cfb5d6d8265dc6d255832ee024c369a", "check": "reentrancy-no-eth", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "cachedWallets.push(wallet)", "source_mapping": {"start": 4775, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [120], "starting_column": 9, "ending_column": 35}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "variables_written", "variable_name": "cachedWallets"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tState variables written after the call(s):\n\t- cachedWallets.push(wallet) (../../contracts/walletCache.sol#120)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tState variables written after the call(s):\n\t- [cachedWallets.push(wallet)](../../contracts/walletCache.sol#L120)\n", "id": "d3dd739fcff6db5a38dc65bdeeb41732a4c3a44a5d8ea06d002d7969c0ed43d6", "check": "reentrancy-benign", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}, {"type": "node", "name": "wallet = address(new UpgradeabilityProxy(walletImplementation,))", "source_mapping": {"start": 4320, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [110], "starting_column": 9, "ending_column": 92}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)", "source_mapping": {"start": 4413, "length": 352, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [111, 112, 113, 114, 115, 116, 117, 118, 119], "starting_column": 9, "ending_column": 10}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "CachedWallet(wallet)", "source_mapping": {"start": 4812, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [122], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "cacheWallet", "source_mapping": {"start": 4207, "length": 637, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "cacheWallet()"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in WalletCache.cacheWallet() (../../contracts/walletCache.sol#108-123):\n\tExternal calls:\n\t- wallet = address(new UpgradeabilityProxy(walletImplementation,)) (../../contracts/walletCache.sol#110)\n\t- IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit) (../../contracts/walletCache.sol#111-119)\n\tEvent emitted after the call(s):\n\t- CachedWallet(wallet) (../../contracts/walletCache.sol#122)\n", "markdown": "Reentrancy in [WalletCache.cacheWallet()](../../contracts/walletCache.sol#L108-L123):\n\tExternal calls:\n\t- [wallet = address(new UpgradeabilityProxy(walletImplementation,))](../../contracts/walletCache.sol#L110)\n\t- [IWallet(wallet).initializeWallet(address(uint160(walletDeployerAddress)),true,ensRegistry(),tokenWhitelistNode,controllerNode(),licenceNode,defaultSpendLimit)](../../contracts/walletCache.sol#L111-L119)\n\tEvent emitted after the call(s):\n\t- [CachedWallet(wallet)](../../contracts/walletCache.sol#L122)\n", "id": "729f5a28e0bc8fd5a3ece7be02c86d5276e49a7e38cee307d7a8f28d47e624ad", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "WalletCache", "source_mapping": {"start": 1265, "length": 3581, "filename_used": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_relative": "../../contracts/walletCache.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/walletCache.sol", "filename_short": "../../contracts/walletCache.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "WalletCache.slitherConstructorVariables() (../../contracts/walletCache.sol#34-124) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[WalletCache.slitherConstructorVariables()](../../contracts/walletCache.sol#L34-L124) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "6ec589a43a86c3ef63ba62623f4aedb63ecec23673914983fe9fe63d9eaf71fc", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (decMinted))", "source_mapping": {"start": 7657, "length": 32, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [147], "starting_column": 13, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (decMinted)) (../../contracts/internals/parseIntScientific.sol#147)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (decMinted))](../../contracts/internals/parseIntScientific.sol#L147)\n", "id": "a00cbae754b82e0580bb91c49d84e3f84757fe6b95d296e7f5362f4c52732bc2", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult - decMinted))", "source_mapping": {"start": 7901, "length": 49, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [151], "starting_column": 13, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult - decMinted)) (../../contracts/internals/parseIntScientific.sol#151)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult - decMinted))](../../contracts/internals/parseIntScientific.sol#L151)\n", "id": "1d12d010b1dcecf3c2d9a7a85a0ed58b1deeaa0b934e4c4434affedabaac2cba", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10 ** (_magnitudeMult))", "source_mapping": {"start": 8410, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [160], "starting_column": 13, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10 ** (_magnitudeMult)) (../../contracts/internals/parseIntScientific.sol#160)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10 ** (_magnitudeMult))](../../contracts/internals/parseIntScientific.sol#L160)\n", "id": "e91e10a4132eaefdd900d02403aa4e7f44e4a4f6cd387cba17518f54a90bc2ab", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mintDec /= 10 ** (decMinted)", "source_mapping": {"start": 8227, "length": 26, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [157], "starting_column": 13, "ending_column": 39}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mintDec = mintDec.mul(10)", "source_mapping": {"start": 3724, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [69], "starting_column": 21, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mintDec /= 10 ** (decMinted) (../../contracts/internals/parseIntScientific.sol#157)\n\t-mintDec = mintDec.mul(10) (../../contracts/internals/parseIntScientific.sol#69)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mintDec /= 10 ** (decMinted)](../../contracts/internals/parseIntScientific.sol#L157)\n\t-[mintDec = mintDec.mul(10)](../../contracts/internals/parseIntScientific.sol#L69)\n", "id": "b07f9d14a8de905177c26444d3943a865a87c6f31f38a7867352b2ad2bbfcd1b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}, {"type": "node", "name": "mint /= 10 ** (mintExp - _magnitudeMult)", "source_mapping": {"start": 6770, "length": 38, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [129], "starting_column": 17, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}, {"type": "node", "name": "mint = mint.mul(10)", "source_mapping": {"start": 4094, "length": 19, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [76], "starting_column": 21, "ending_column": 40}, "type_specific_fields": {"parent": {"type": "function", "name": "_parseIntScientific", "source_mapping": {"start": 2373, "length": 6150, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ParseIntScientific", "source_mapping": {"start": 986, "length": 7539, "filename_used": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_relative": "../../contracts/internals/parseIntScientific.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/parseIntScientific.sol", "filename_short": "../../contracts/internals/parseIntScientific.sol", "is_dependency": false, "lines": [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165], "starting_column": 1, "ending_column": 2}}, "signature": "_parseIntScientific(string,uint256)"}}}}], "description": "ParseIntScientific._parseIntScientific(string,uint256) (../../contracts/internals/parseIntScientific.sol#50-164) performs a multiplication on the result of a division:\n\t-mint /= 10 ** (mintExp - _magnitudeMult) (../../contracts/internals/parseIntScientific.sol#129)\n\t-mint = mint.mul(10) (../../contracts/internals/parseIntScientific.sol#76)\n", "markdown": "[ParseIntScientific._parseIntScientific(string,uint256)](../../contracts/internals/parseIntScientific.sol#L50-L164) performs a multiplication on the result of a division:\n\t-[mint /= 10 ** (mintExp - _magnitudeMult)](../../contracts/internals/parseIntScientific.sol#L129)\n\t-[mint = mint.mul(10)](../../contracts/internals/parseIntScientific.sol#L76)\n", "id": "0e970ab548d58d51263afb00b0f30a0d9498eb69cd76f96228dfaabb8a30df4b", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.split(:.toSlice())", "source_mapping": {"start": 5420, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [126], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.split(:.toSlice()) (../../contracts/oracle.sol#126)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.split(:.toSlice())](../../contracts/oracle.sol#L126)\n", "id": "21f8486b9622b298d2d789c38e02589e0f8f285ae2afcf1c5e8d557d2ed414d8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}, {"type": "node", "name": "body.until(}.toSlice())", "source_mapping": {"start": 5573, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [129], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "parseRate", "source_mapping": {"start": 4890, "length": 874, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "parseRate(string)"}}}}], "description": "Oracle.parseRate(string) (../../contracts/oracle.sol#116-133) ignores return value by body.until(}.toSlice()) (../../contracts/oracle.sol#129)\n", "markdown": "[Oracle.parseRate(string)](../../contracts/oracle.sol#L116-L133) ignores return value by [body.until(}.toSlice())](../../contracts/oracle.sol#L129)\n", "id": "30217163eae600a9621a0d1eddc7e5fe773b534668ab60f48a814761acaa25c8", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Oracle", "source_mapping": {"start": 1244, "length": 10242, "filename_used": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_relative": "../../contracts/oracle.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/oracle.sol", "filename_short": "../../contracts/oracle.sol", "is_dependency": false, "lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Oracle.slitherConstructorVariables() (../../contracts/oracle.sol#34-271) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Oracle.slitherConstructorVariables()](../../contracts/oracle.sol#L34-L271) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "1ccc8623a1b94671b5a93fca4cd2c83f1a9019002669cd6f59043b11a6ad200a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Holder", "source_mapping": {"start": 1288, "length": 3602, "filename_used": "/contracts/tools/slither/../../contracts/holder.sol", "filename_relative": "../../contracts/holder.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/holder.sol", "filename_short": "../../contracts/holder.sol", "is_dependency": false, "lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Holder.slitherConstructorVariables() (../../contracts/holder.sol#33-115) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Holder.slitherConstructorVariables()](../../contracts/holder.sol#L33-L115) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ab16c2a943e01c8201ac13da06217a3749fd06371ab968890b731a984fcdee99", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}, {"type": "node", "name": "amountToSend = _amount.mul(rate).div(magnitude)", "source_mapping": {"start": 34588, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [750], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}, {"type": "node", "name": "amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)", "source_mapping": {"start": 35166, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [759], "starting_column": 9, "ending_column": 73}, "type_specific_fields": {"parent": {"type": "function", "name": "convertToStablecoin", "source_mapping": {"start": 33697, "length": 1540, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "convertToStablecoin(address,uint256)"}}}}], "description": "Wallet.convertToStablecoin(address,uint256) (../../contracts/wallet.sol#734-760) performs a multiplication on the result of a division:\n\t-amountToSend = _amount.mul(rate).div(magnitude) (../../contracts/wallet.sol#750)\n\t-amountToSend.mul(stablecoinMagnitude).div(stablecoinRate) (../../contracts/wallet.sol#759)\n", "markdown": "[Wallet.convertToStablecoin(address,uint256)](../../contracts/wallet.sol#L734-L760) performs a multiplication on the result of a division:\n\t-[amountToSend = _amount.mul(rate).div(magnitude)](../../contracts/wallet.sol#L750)\n\t-[amountToSend.mul(stablecoinMagnitude).div(stablecoinRate)](../../contracts/wallet.sol#L759)\n", "id": "6445d302d697fb16f8a229d2e9573ca790c2c85a9aa543810c45b2944e1e6f31", "check": "divide-before-multiply", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 21839, "length": 27, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498], "starting_column": 35, "ending_column": 62}, "type_specific_fields": {"parent": {"type": "function", "name": "_initializeLoadLimit", "source_mapping": {"start": 21809, "length": 464, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [498, 499, 500, 501, 502, 503, 504], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "LoadLimit", "source_mapping": {"start": 19723, "length": 2552, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505], "starting_column": 1, "ending_column": 2}}, "signature": "_initializeLoadLimit(bytes32)"}}}}, {"type": "variable", "name": "_tokenWhitelistNode", "source_mapping": {"start": 1348, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [33], "starting_column": 5, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "contract", "name": "TokenWhitelistable", "source_mapping": {"start": 1045, "length": 5236, "filename_used": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_relative": "../../contracts/internals/tokenWhitelistable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/tokenWhitelistable.sol", "filename_short": "../../contracts/internals/tokenWhitelistable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155], "starting_column": 1, "ending_column": 2}}}}], "description": "LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode (../../contracts/wallet.sol#498) shadows:\n\t- TokenWhitelistable._tokenWhitelistNode (../../contracts/internals/tokenWhitelistable.sol#33) (state variable)\n", "markdown": "[LoadLimit._initializeLoadLimit(bytes32)._tokenWhitelistNode](../../contracts/wallet.sol#L498) shadows:\n\t- [TokenWhitelistable._tokenWhitelistNode](../../contracts/internals/tokenWhitelistable.sol#L33) (state variable)\n", "id": "8f15cbf6d24a4b17962fde5591cd20736fc2ed8d234ab44f7ef3eab547790f4e", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}, {"type": "node", "name": "(success,returnData) = address(this).call(_data)", "source_mapping": {"start": 26571, "length": 67, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [594], "starting_column": 9, "ending_column": 76}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedRelayedTransaction(_data,returnData)", "source_mapping": {"start": 26695, "length": 50, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [597], "starting_column": 9, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "executeRelayedTransaction", "source_mapping": {"start": 25611, "length": 1141, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeRelayedTransaction(uint256,bytes,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeRelayedTransaction(uint256,bytes,bytes) (../../contracts/wallet.sol#575-598):\n\tExternal calls:\n\t- (success,returnData) = address(this).call(_data) (../../contracts/wallet.sol#594)\n\tEvent emitted after the call(s):\n\t- ExecutedRelayedTransaction(_data,returnData) (../../contracts/wallet.sol#597)\n", "markdown": "Reentrancy in [Wallet.executeRelayedTransaction(uint256,bytes,bytes)](../../contracts/wallet.sol#L575-L598):\n\tExternal calls:\n\t- [(success,returnData) = address(this).call(_data)](../../contracts/wallet.sol#L594)\n\tEvent emitted after the call(s):\n\t- [ExecutedRelayedTransaction(_data,returnData)](../../contracts/wallet.sol#L597)\n", "id": "fd7a2414668142cb7d8c6e926deb48e7d79b488892a1c4124a90ee572a54f66b", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "IERC20(_destination)._callOptionalReturn(_data)", "source_mapping": {"start": 36836, "length": 47, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [790], "starting_column": 13, "ending_column": 60}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,b)", "source_mapping": {"start": 37058, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [796], "starting_column": 13, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- IERC20(_destination)._callOptionalReturn(_data) (../../contracts/wallet.sol#790)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,b) (../../contracts/wallet.sol#796)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [IERC20(_destination)._callOptionalReturn(_data)](../../contracts/wallet.sol#L790)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,b)](../../contracts/wallet.sol#L796)\n", "id": "65cc0d4c07c009b76fbfb0b4d3e00279b26b42291be351fa85d02d52289ddb55", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 37157, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [800], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 37295, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [803], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 35497, "length": 1967, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.executeTransaction(address,uint256,bytes) (../../contracts/wallet.sol#766-806):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/wallet.sol#800)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/wallet.sol#803)\n", "markdown": "Reentrancy in [Wallet.executeTransaction(address,uint256,bytes)](../../contracts/wallet.sol#L766-L806):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/wallet.sol#L800)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/wallet.sol#L803)\n", "id": "a7bcadd27f5cdccdaaa907a36b948f11ba25788811f5335bf5a24502fa4512dd", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeApprove(licenceAddress,_amount)", "source_mapping": {"start": 29184, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [648], "starting_column": 13, "ending_column": 64}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load(_asset,_amount)", "source_mapping": {"start": 29249, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [649], "starting_column": 13, "ending_column": 59}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ILicence(licenceAddress).load{value: _amount}(_asset,_amount)", "source_mapping": {"start": 29326, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [651], "starting_column": 13, "ending_column": 75}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "LoadedTokenCard(_asset,_amount)", "source_mapping": {"start": 29409, "length": 37, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [654], "starting_column": 9, "ending_column": 46}, "type_specific_fields": {"parent": {"type": "function", "name": "loadTokenCard", "source_mapping": {"start": 28508, "length": 945, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "loadTokenCard(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.loadTokenCard(address,uint256) (../../contracts/wallet.sol#638-655):\n\tExternal calls:\n\t- IERC20(_asset).safeApprove(licenceAddress,_amount) (../../contracts/wallet.sol#648)\n\t- ILicence(licenceAddress).load(_asset,_amount) (../../contracts/wallet.sol#649)\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tExternal calls sending eth:\n\t- ILicence(licenceAddress).load{value: _amount}(_asset,_amount) (../../contracts/wallet.sol#651)\n\tEvent emitted after the call(s):\n\t- LoadedTokenCard(_asset,_amount) (../../contracts/wallet.sol#654)\n", "markdown": "Reentrancy in [Wallet.loadTokenCard(address,uint256)](../../contracts/wallet.sol#L638-L655):\n\tExternal calls:\n\t- [IERC20(_asset).safeApprove(licenceAddress,_amount)](../../contracts/wallet.sol#L648)\n\t- [ILicence(licenceAddress).load(_asset,_amount)](../../contracts/wallet.sol#L649)\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tExternal calls sending eth:\n\t- [ILicence(licenceAddress).load{value: _amount}(_asset,_amount)](../../contracts/wallet.sol#L651)\n\tEvent emitted after the call(s):\n\t- [LoadedTokenCard(_asset,_amount)](../../contracts/wallet.sol#L654)\n", "id": "6d9ec72b6be638f2f6ce2dc892658392de55592a20b6c03e6b8cb771c5881a97", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 12835, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [277], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_getAvailableLimit", "source_mapping": {"start": 12736, "length": 240, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [276, 277, 278, 279, 280, 281, 282], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_getAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#276-282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#277)\n", "markdown": "[DailyLimitTrait._getAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L276-L282) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L277)\n", "id": "a88a1183e45466591a276356c926ebf70a5ac492c7271546b57f1909cf4fb60d", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}, {"type": "node", "name": "now > self.limitTimestamp.add(86400)", "source_mapping": {"start": 14656, "length": 39, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [319], "starting_column": 13, "ending_column": 52}, "type_specific_fields": {"parent": {"type": "function", "name": "_updateAvailableLimit", "source_mapping": {"start": 14578, "length": 370, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [318, 319, 320, 321, 322, 323, 324, 325, 326], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "DailyLimitTrait", "source_mapping": {"start": 11495, "length": 3455, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327], "starting_column": 1, "ending_column": 2}}, "signature": "_updateAvailableLimit(DailyLimitTrait.DailyLimit)"}}}}], "description": "DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit) (../../contracts/wallet.sol#318-326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- now > self.limitTimestamp.add(86400) (../../contracts/wallet.sol#319)\n", "markdown": "[DailyLimitTrait._updateAvailableLimit(DailyLimitTrait.DailyLimit)](../../contracts/wallet.sol#L318-L326) uses timestamp for comparisons\n\tDangerous comparisons:\n\t- [now > self.limitTimestamp.add(86400)](../../contracts/wallet.sol#L319)\n", "id": "79967c539447e17dc6ee9c3ea09ef3fb94efe619db1c107e91000247e937d1b9", "check": "timestamp", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}, {"type": "node", "name": "owner().transfer(_amount)", "source_mapping": {"start": 30285, "length": 25, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [670], "starting_column": 9, "ending_column": 34}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "ToppedUpGas(msg.sender,owner(),_amount)", "source_mapping": {"start": 30358, "length": 46, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [672], "starting_column": 9, "ending_column": 55}, "type_specific_fields": {"parent": {"type": "function", "name": "topUpGas", "source_mapping": {"start": 29844, "length": 567, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [664, 665, 666, 667, 668, 669, 670, 671, 672, 673], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "topUpGas(uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Wallet.topUpGas(uint256) (../../contracts/wallet.sol#664-673):\n\tExternal calls:\n\t- owner().transfer(_amount) (../../contracts/wallet.sol#670)\n\tEvent emitted after the call(s):\n\t- ToppedUpGas(msg.sender,owner(),_amount) (../../contracts/wallet.sol#672)\n", "markdown": "Reentrancy in [Wallet.topUpGas(uint256)](../../contracts/wallet.sol#L664-L673):\n\tExternal calls:\n\t- [owner().transfer(_amount)](../../contracts/wallet.sol#L670)\n\tEvent emitted after the call(s):\n\t- [ToppedUpGas(msg.sender,owner(),_amount)](../../contracts/wallet.sol#L672)\n", "id": "b3cf8530bb4219f6181fdec9d6e56a23dd51951afbacf23b2c46ee363b79da5d", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Wallet.slitherConstructorVariables() (../../contracts/wallet.sol#508-847) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Wallet.slitherConstructorVariables()](../../contracts/wallet.sol#L508-L847) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "2fe37a4cad071bfa6d82a1450bfeecafbc3e29abd64963b028105a4d9582ef0a", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "batchExecuteTransaction", "source_mapping": {"start": 30743, "length": 2016, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "batchExecuteTransaction(bytes)"}}], "description": "batchExecuteTransaction(bytes) should be declared external:\n\t- Wallet.batchExecuteTransaction(bytes) (../../contracts/wallet.sol#679-714)\n", "markdown": "batchExecuteTransaction(bytes) should be declared external:\n\t- [Wallet.batchExecuteTransaction(bytes)](../../contracts/wallet.sol#L679-L714)\n", "id": "25be393b22a852005aebc844d44187435f0cfff81e7632ced668dd912f0e2261", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "transfer", "source_mapping": {"start": 38268, "length": 1127, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Wallet", "source_mapping": {"start": 22375, "length": 17022, "filename_used": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_relative": "../../contracts/wallet.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/wallet.sol", "filename_short": "../../contracts/wallet.sol", "is_dependency": false, "lines": [508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847], "starting_column": 1, "ending_column": 2}}, "signature": "transfer(address,address,uint256)"}}], "description": "transfer(address,address,uint256) should be declared external:\n\t- Wallet.transfer(address,address,uint256) (../../contracts/wallet.sol#822-846)\n", "markdown": "transfer(address,address,uint256) should be declared external:\n\t- [Wallet.transfer(address,address,uint256)](../../contracts/wallet.sol#L822-L846)\n", "id": "b19b3dda14789ad85379258374bd5193fe48580bb2ea18c14a6866357ec7209b", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}}], "description": "Licence.load(address,uint256) (../../contracts/licence.sol#201-223) sends eth to arbitrary user\n\tDangerous calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n", "markdown": "[Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223) sends eth to arbitrary user\n\tDangerous calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n", "id": "77a1d9fb3657ae0373a1ee2191c5fba1c04170d16f4a8c073a174eedb2b6bc4b", "check": "arbitrary-send", "impact": "High", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "ab8f3835605e2d6159e5db4f37dce11ccdcd6f5bd12fff12d51622a9cb8e5453", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8282, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [205], "starting_column": 13, "ending_column": 82}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)", "source_mapping": {"start": 8589, "length": 72, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [211], "starting_column": 17, "ending_column": 89}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)", "source_mapping": {"start": 8679, "length": 69, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [212], "starting_column": 17, "ending_column": 86}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#205)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount) (../../contracts/licence.sol#211)\n\t- IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount) (../../contracts/licence.sol#212)\n\tExternal calls sending eth:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L205)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_tokenHolder,licenceAmount)](../../contracts/licence.sol#L211)\n\t- [IERC20(_asset).safeTransferFrom(msg.sender,_cryptoFloat,loadAmount)](../../contracts/licence.sol#L212)\n\tExternal calls sending eth:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n", "id": "0b66bfae7ffcf90f00f0a76079b285289d517503f7c8d1dd100edcc09956113e", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}, {"type": "node", "name": "_tokenHolder.transfer(licenceAmount)", "source_mapping": {"start": 8869, "length": 36, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [215], "starting_column": 17, "ending_column": 53}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_cryptoFloat.transfer(loadAmount)", "source_mapping": {"start": 8923, "length": 33, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [216], "starting_column": 17, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)", "source_mapping": {"start": 9084, "length": 75, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [222], "starting_column": 9, "ending_column": 84}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}, {"type": "node", "name": "TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)", "source_mapping": {"start": 8985, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [219], "starting_column": 13, "ending_column": 91}, "type_specific_fields": {"parent": {"type": "function", "name": "load", "source_mapping": {"start": 8076, "length": 1090, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "load(address,uint256)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in Licence.load(address,uint256) (../../contracts/licence.sol#201-223):\n\tExternal calls:\n\t- _tokenHolder.transfer(licenceAmount) (../../contracts/licence.sol#215)\n\t- _cryptoFloat.transfer(loadAmount) (../../contracts/licence.sol#216)\n\tEvent emitted after the call(s):\n\t- TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount) (../../contracts/licence.sol#222)\n\t- TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount) (../../contracts/licence.sol#219)\n", "markdown": "Reentrancy in [Licence.load(address,uint256)](../../contracts/licence.sol#L201-L223):\n\tExternal calls:\n\t- [_tokenHolder.transfer(licenceAmount)](../../contracts/licence.sol#L215)\n\t- [_cryptoFloat.transfer(loadAmount)](../../contracts/licence.sol#L216)\n\tEvent emitted after the call(s):\n\t- [TransferredToCryptoFloat(msg.sender,_cryptoFloat,_asset,loadAmount)](../../contracts/licence.sol#L222)\n\t- [TransferredToTokenHolder(msg.sender,_tokenHolder,_asset,licenceAmount)](../../contracts/licence.sol#L219)\n", "id": "bbb126fc2fc1618ff0d13105f131a70023ab7963d1556c263706b87552939c1c", "check": "reentrancy-unlimited-gas", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "Licence", "source_mapping": {"start": 1179, "length": 8978, "filename_used": "/contracts/tools/slither/../../contracts/licence.sol", "filename_relative": "../../contracts/licence.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/licence.sol", "filename_short": "../../contracts/licence.sol", "is_dependency": false, "lines": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "Licence.slitherConstructorVariables() (../../contracts/licence.sol#31-254) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[Licence.slitherConstructorVariables()](../../contracts/licence.sol#L31-L254) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "ddd5fb5c3b142504e4277598a2547e1741a8d933f34e84e86b548befebf2252b", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}}], "description": "GasRefundable.refundGas() (../../contracts/internals/gasRefundable.sol#40-45) ignores return value by _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n", "markdown": "[GasRefundable.refundGas()](../../contracts/internals/gasRefundable.sol#L40-L45) ignores return value by [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n", "id": "b75743d2bf9fc11b85a8d9fdebf99c34d10435409f23409fa2d0973b85c8c081", "check": "unused-return", "impact": "Medium", "confidence": "Medium"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 641, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 59, "ending_column": 72}, "type_specific_fields": {"parent": {"type": "function", "name": "setSubnodeOwner", "source_mapping": {"start": 587, "length": 78, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [20], "starting_column": 5, "ending_column": 83}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setSubnodeOwner(bytes32,bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setSubnodeOwner(bytes32,bytes32,address).owner (../../contracts/interfaces/IENS.sol#20) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setSubnodeOwner(bytes32,bytes32,address).owner](../../contracts/interfaces/IENS.sol#L20) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "b8efeadf77d41b1a7d348368cca9449309ebb832456da6bf37c0342bf862a499", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "resolver", "source_mapping": {"start": 705, "length": 16, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 40, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "function", "name": "setResolver", "source_mapping": {"start": 670, "length": 62, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [21], "starting_column": 5, "ending_column": 67}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setResolver(bytes32,address)"}}}}, {"type": "function", "name": "resolver", "source_mapping": {"start": 920, "length": 64, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [25], "starting_column": 5, "ending_column": 69}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "resolver(bytes32)"}}], "description": "IENS.setResolver(bytes32,address).resolver (../../contracts/interfaces/IENS.sol#21) shadows:\n\t- IENS.resolver(bytes32) (../../contracts/interfaces/IENS.sol#25) (function)\n", "markdown": "[IENS.setResolver(bytes32,address).resolver](../../contracts/interfaces/IENS.sol#L21) shadows:\n\t- [IENS.resolver(bytes32)](../../contracts/interfaces/IENS.sol#L25) (function)\n", "id": "130d460d673393efe8a8da0e46e6b069c8552de929f23a9872afa5af3064cfd3", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "owner", "source_mapping": {"start": 769, "length": 13, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 37, "ending_column": 50}, "type_specific_fields": {"parent": {"type": "function", "name": "setOwner", "source_mapping": {"start": 737, "length": 56, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [22], "starting_column": 5, "ending_column": 61}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setOwner(bytes32,address)"}}}}, {"type": "function", "name": "owner", "source_mapping": {"start": 854, "length": 61, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [24], "starting_column": 5, "ending_column": 66}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "owner(bytes32)"}}], "description": "IENS.setOwner(bytes32,address).owner (../../contracts/interfaces/IENS.sol#22) shadows:\n\t- IENS.owner(bytes32) (../../contracts/interfaces/IENS.sol#24) (function)\n", "markdown": "[IENS.setOwner(bytes32,address).owner](../../contracts/interfaces/IENS.sol#L22) shadows:\n\t- [IENS.owner(bytes32)](../../contracts/interfaces/IENS.sol#L24) (function)\n", "id": "68a9c62e14cf270cc78b15e4f6eff049bf028789e5364f716487844103314b09", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "variable", "name": "ttl", "source_mapping": {"start": 828, "length": 10, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 35, "ending_column": 45}, "type_specific_fields": {"parent": {"type": "function", "name": "setTTL", "source_mapping": {"start": 798, "length": 51, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [23], "starting_column": 5, "ending_column": 56}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "setTTL(bytes32,uint64)"}}}}, {"type": "function", "name": "ttl", "source_mapping": {"start": 989, "length": 58, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [26], "starting_column": 5, "ending_column": 63}, "type_specific_fields": {"parent": {"type": "contract", "name": "IENS", "source_mapping": {"start": 61, "length": 989, "filename_used": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_relative": "../../contracts/interfaces/IENS.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/interfaces/IENS.sol", "filename_short": "../../contracts/interfaces/IENS.sol", "is_dependency": false, "lines": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "starting_column": 1, "ending_column": null}}, "signature": "ttl(bytes32)"}}], "description": "IENS.setTTL(bytes32,uint64).ttl (../../contracts/interfaces/IENS.sol#23) shadows:\n\t- IENS.ttl(bytes32) (../../contracts/interfaces/IENS.sol#26) (function)\n", "markdown": "[IENS.setTTL(bytes32,uint64).ttl](../../contracts/interfaces/IENS.sol#L23) shadows:\n\t- [IENS.ttl(bytes32)](../../contracts/interfaces/IENS.sol#L26) (function)\n", "id": "a69f8ad16df8947c6709bf091d37a3ec734d1ab5151c7135b5df2cc84378909c", "check": "shadowing-local", "impact": "Low", "confidence": "High"}, {"elements": [{"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "refundGas()", "source_mapping": {"start": 2239, "length": 9, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [49], "starting_column": 39, "ending_column": 48}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls"}}, {"type": "node", "name": "_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)", "source_mapping": {"start": 1847, "length": 107, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [44], "starting_column": 9, "ending_column": 116}, "type_specific_fields": {"parent": {"type": "function", "name": "refundGas", "source_mapping": {"start": 1687, "length": 274, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [40, 41, 42, 43, 44, 45], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasRefundable", "source_mapping": {"start": 901, "length": 2256, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], "starting_column": 1, "ending_column": 2}}, "signature": "refundGas()"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "(success,returnData) = _destination.call{value: _value}(_data)", "source_mapping": {"start": 2282, "length": 81, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [50], "starting_column": 9, "ending_column": 90}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "external_calls_sending_eth"}}, {"type": "node", "name": "ExecutedTransaction(_destination,_value,_data,returnData)", "source_mapping": {"start": 2423, "length": 65, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [52], "starting_column": 9, "ending_column": 74}, "type_specific_fields": {"parent": {"type": "function", "name": "executeTransaction", "source_mapping": {"start": 2089, "length": 433, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "executeTransaction(address,uint256,bytes)"}}}, "additional_fields": {"underlying_type": "event"}}], "description": "Reentrancy in GasProxy.executeTransaction(address,uint256,bytes) (../../contracts/gasProxy.sol#45-54):\n\tExternal calls:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\t- refundGas() (../../contracts/gasProxy.sol#49)\n\t\t- _gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit) (../../contracts/internals/gasRefundable.sol#44)\n\tExternal calls sending eth:\n\t- (success,returnData) = _destination.call{value: _value}(_data) (../../contracts/gasProxy.sol#50)\n\tEvent emitted after the call(s):\n\t- ExecutedTransaction(_destination,_value,_data,returnData) (../../contracts/gasProxy.sol#52)\n", "markdown": "Reentrancy in [GasProxy.executeTransaction(address,uint256,bytes)](../../contracts/gasProxy.sol#L45-L54):\n\tExternal calls:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\t- [refundGas()](../../contracts/gasProxy.sol#L49)\n\t\t- [_gasToken.freeUpTo((gasSpent + _gasTokenParameters.freeCallGasCost) / _gasTokenParameters.gasRefundPerUnit)](../../contracts/internals/gasRefundable.sol#L44)\n\tExternal calls sending eth:\n\t- [(success,returnData) = _destination.call{value: _value}(_data)](../../contracts/gasProxy.sol#L50)\n\tEvent emitted after the call(s):\n\t- [ExecutedTransaction(_destination,_value,_data,returnData)](../../contracts/gasProxy.sol#L52)\n", "id": "068c35828662fe2aa881b25e2c4d696b8f9ef37468232254c1c64db5f71f0109", "check": "reentrancy-events", "impact": "Low", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)", "source_mapping": {"start": 1216, "length": 82, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [31], "starting_column": 5, "ending_column": 87}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e) (../../contracts/internals/ensResolvable.sol#31)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_ensRegistry = address(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e)](../../contracts/internals/ensResolvable.sol#L31)\n", "id": "8d59c600de2d2cc19c4bf271ece114c7e452982cd3d73eaec8ac52f4452c3633", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}, {"type": "node", "name": "_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)", "source_mapping": {"start": 1267, "length": 83, "filename_used": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_relative": "../../contracts/internals/gasRefundable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/gasRefundable.sol", "filename_short": "../../contracts/internals/gasRefundable.sol", "is_dependency": false, "lines": [35], "starting_column": 5, "ending_column": 88}, "type_specific_fields": {"parent": {"type": "function", "name": "slitherConstructorVariables", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}, "type_specific_fields": {"parent": {"type": "contract", "name": "GasProxy", "source_mapping": {"start": 897, "length": 1627, "filename_used": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_relative": "../../contracts/gasProxy.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/gasProxy.sol", "filename_short": "../../contracts/gasProxy.sol", "is_dependency": false, "lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], "starting_column": 1, "ending_column": 2}}, "signature": "slitherConstructorVariables()"}}}}], "description": "GasProxy.slitherConstructorVariables() (../../contracts/gasProxy.sol#24-55) uses literals with too many digits:\n\t- _gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c) (../../contracts/internals/gasRefundable.sol#35)\n", "markdown": "[GasProxy.slitherConstructorVariables()](../../contracts/gasProxy.sol#L24-L55) uses literals with too many digits:\n\t- [_gasToken = IGasToken(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c)](../../contracts/internals/gasRefundable.sol#L35)\n", "id": "cc9926bb61499e4a85aaa6ca9e14c72e52ace88023d447419175ef3ba1f518d5", "check": "too-many-digits", "impact": "Informational", "confidence": "Medium"}, {"elements": [{"type": "function", "name": "controllerNode", "source_mapping": {"start": 1813, "length": 95, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [49, 50, 51], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Controllable", "source_mapping": {"start": 1030, "length": 1770, "filename_used": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_relative": "../../contracts/internals/controllable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/controllable.sol", "filename_short": "../../contracts/internals/controllable.sol", "is_dependency": false, "lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72], "starting_column": 1, "ending_column": 2}}, "signature": "controllerNode()"}}], "description": "controllerNode() should be declared external:\n\t- Controllable.controllerNode() (../../contracts/internals/controllable.sol#49-51)\n", "markdown": "controllerNode() should be declared external:\n\t- [Controllable.controllerNode()](../../contracts/internals/controllable.sol#L49-L51)\n", "id": "d13a5d67fbaa6821edc17da5f446b38ce126b2b8abcbc3c21b79428186db1d29", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "ensRegistry", "source_mapping": {"start": 1600, "length": 89, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [40, 41, 42], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "ENSResolvable", "source_mapping": {"start": 1079, "length": 1226, "filename_used": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_relative": "../../contracts/internals/ensResolvable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ensResolvable.sol", "filename_short": "../../contracts/internals/ensResolvable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], "starting_column": 1, "ending_column": 2}}, "signature": "ensRegistry()"}}], "description": "ensRegistry() should be declared external:\n\t- ENSResolvable.ensRegistry() (../../contracts/internals/ensResolvable.sol#40-42)\n", "markdown": "ensRegistry() should be declared external:\n\t- [ENSResolvable.ensRegistry()](../../contracts/internals/ensResolvable.sol#L40-L42)\n", "id": "1afd905300be9ef64532aa1b05a1cfa9a93096242283226925905e9b9034d0cc", "check": "external-function", "impact": "Optimization", "confidence": "High"}, {"elements": [{"type": "function", "name": "owner", "source_mapping": {"start": 3543, "length": 85, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [82, 83, 84], "starting_column": 5, "ending_column": 6}, "type_specific_fields": {"parent": {"type": "contract", "name": "Ownable", "source_mapping": {"start": 1225, "length": 3110, "filename_used": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_relative": "../../contracts/internals/ownable.sol", "filename_absolute": "/contracts/tools/slither/../../contracts/internals/ownable.sol", "filename_short": "../../contracts/internals/ownable.sol", "is_dependency": false, "lines": [29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102], "starting_column": 1, "ending_column": 2}}, "signature": "owner()"}}], "description": "owner() should be declared external:\n\t- Ownable.owner() (../../contracts/internals/ownable.sol#82-84)\n", "markdown": "owner() should be declared external:\n\t- [Ownable.owner()](../../contracts/internals/ownable.sol#L82-L84)\n", "id": "698811821ed34357d834c197b976565a1354eaff150bcbc8a352f2d8c7df57f3", "check": "external-function", "impact": "Optimization", "confidence": "High"}] \ No newline at end of file